0%

关于pytest自动化测试框架的使用

hello 大家好我是Monday,今天给大家带来一篇关于pytest自动化测试框架的使用的文章。

一、环境安装

pytest 是 python 中的第三方库,使用之前需要先安装,在命令行中运行以下安装命令 :

1
pip install pytest

检查安装是否成功以及安装的版本,命令行命令如下:

1
pytest --version

执行上述命令,能够输出版本信息,那就说明安装成功啦。

二、用例的识别与运行

用例编写规范:

  • 测试文件以 test_ 开头(以 _test 结尾也可以)
  • 测试类以 Test 开头,并且不能带有 init 方法
  • 测试函数以 test_ 开头
  • 断言使用基本的 assert 即可

创建一个 python 文件,命名以 test_ 开头(或者以 test 结尾),创建测试方法以 test 开头,测试类需要以 Test 开头。创建文件名为 test_add.py 文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/env python
# -*- coding: utf-8 -*-
def add(x, y):
return x + y

def test_add():
assert add(1, 10) == 11
assert add(1, 1) == 2
assert add(1, 99) == 100

class TestClass:
def test_one(self):
x = "this"
assert "h" in x

def test_two(self):
x = "hello"
assert hasattr(x, "check")

三、测试结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
pytest test_add.py
================================================== test session starts ==================================================
platform win32 -- Python 3.7.2, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
rootdir: E:\jsfund_workerspace\crawl_platform_jsfund\test
plugins: anyio-3.3.0, celery-4.4.2
collected 3 items

test_add.py ..F [100%]

======================================================= FAILURES ========================================================
__________________________________________________ TestClass.test_two ___________________________________________________

self = <test.test_add.TestClass object at 0x0000021C9C6547F0>

def test_two(self):
x = "hello"
> assert hasattr(x, "check")
E AssertionError: assert False
E + where False = hasattr('hello', 'check')

test_add.py:20: AssertionError
================================================ short test summary info ================================================
FAILED test_add.py::TestClass::test_two - AssertionError: assert False
============================================== 1 failed, 2 passed in 0.10s

测试方式

1、pytest.main 执行的参数传递

pytest.main 方法是执行测试参数传递方式:

所以把参数放在列表中,每个参数就是列表中的一个元素

1
pytest.main(['-v','-s'])

参数 : 显示测试执行的输出信息-s

参数 : 显示测试的详细参数信息-v

详细的参数可以使用命令 查看pytest -h

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest


def add(x, y):
return x + y


def test_add():
assert add(1, 10) == 11
assert add(1, 1) == 2
assert add(1, 99) == 100


class TestClass:
""" @pytest.mark.run(order=2) 执行顺序order=1 > order=2 """
@pytest.mark.run(order=2)
def test_one(self):
x = "this"
assert "h" in x

@pytest.mark.run(order=1)
def test_two(self):
x = "hello"
assert hasattr(x, "check")


pytest.main(['-v', '-s', "test_add.py"])

2、指定执行的测试目录

命令pytest 测试目录路径

1
pytest testcase/

pytest 会执行指定目录路径下所有的测试用例

3、指定执行的测试文件

命令pytest 测试文件路径

1
pytest testcase/test_demo1.py

pytest 会执行指定测试文件中所有的测试用例

4、指定执行的测试类

命令pytest 测试文件::测试类

1
pytest testcase/test_demo1.py::TestClass

pytest 会执行指定测试类里面所有的测试用例

5、指定执行的测试用例

命令pytest 测试文件::测试类::测试方法

1
pytest testcase/test_demo1.py::TestClass::test_method

四、pycharm 配置pytest测试

(1)Mac下
PyCharm Community Edition—>Preference—>Tools—>Python Integrated Tools, 把Default test runner换为pytest就可以了

(2)windows下

PyCharm Community Edition—>settings—>Tools—>Python Integrated Tools, 把Default test runner换为pytest就可以了

参考文章:

(1)pytest 自动化测试框架(一)

https://developer.aliyun.com/article/776171

结束语

​ 今天的分享就到这里了,欢迎大家关注微信公众号”菜鸟童靴

图片