1、安装pytest
2、安装html插件
3、编写测试用例
4、执行测试
5、生成测试报告
1.1 安装pytest
pip3 install pytest 执行该命令安装pytest
1.2 验证安装
pytest -V 查看当前已安装版本
1.3 pytest文档
官方文档:https://docs.pytest.org/en/latest/contents.html
在pytest框架中,有如下约束:
所有的单测文件名都需要满足test_.py格式或_test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
2、安装html插件
pip install pytest-html #安装html插件
3、编写用例
pytest兼容unittest,所以在pytest框架中可以使用函数的形式编写测试用例,也可以使用类的形式编写测试用例。
3.1 函数形式编写测试用例
import pytest
def test_case1():
assert 11 == 11
def test_case2():
assert 22 == 23
3.2 类形式编写测试用例
import pytest
class Test:
def test_case1(self):
assert 11 == 11
def test_case2(self):
assert 22 == 23
3.3 pytest运行上述用例,结果如下:
运行结果可以看到,test_case1执行通过,test_case2执行失败
说明:
collected 1 item:pytest运行的时候一共收集到了2条测试用例。
test_sample.py F:标记F,是指测试结果失败,注意Failure和Error的区别。
[100%] :指测试用例运行的总体进度。
FAILURES:输出了详细的错误信息,帮助我们分析测试原因,我们可以看到"assert 22 == 23"这条语句出错了。
pytest运行的时候,默认会收集当前目录及其子目录中,所有test_.py或test.py文件中以"test"开头的测试函数。
测试用例运行结果标记符:
.点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error
S 表示用例被跳过 Skip
x 小写的 x 表示预期失败 xfail
X 大写的 X 表示预期失败,但是通过了
4、执行测试
除了直接在终端使用pytest执行测试用例外,还可以通过代码行使用pytest.main()的方法来执行测试用例
4.1 执行参数
#测试用例
class Test:
def test_case1(self):
assert 11 == 11
def test_case2(self):
assert 22 == 23
pytest -v #显示测试用例的详细参数信息
pytest -s #显示测试用例的输出信息
-k 'case or ca' 关键字过滤执行
-m 执行被标记的测试用例,例如-m 'case1而不是case2'
--markers 显示标记
-x 在遇到第一个执行错误或失败后立即退出
--maxfail=2 出现2次错误或失败后立即退出
--lf 只执行上次失败的测试用例,如果没有失败用例,则全部重新执行
--ff 执行所有测试用例,但先执行上次最后失败的用例
--cache-show 显示缓存内容,不收集和执行用例
--cache-clear 在执行开始时删除所有缓存
--sw 在测试失败时退出,并在下一次从失败用例开始执行
更详细的可以通过pytest -h查看
4.2 pytest.main 执行的参数传递
pytest.main()参数传递方式:
将所有参数放进列表,列表中的每一个参数对应一个元素
#测试用例
class Test:
def test_case1(self):
print('----->执行成功')
assert 11 == 11
def test_case2(self):
print('----->执行失败')
assert 22 == 23
if __name__ == '__main__':
pytest.main(['-v','-s'])
4.3 指定执行的测试目录
pytest Test/ #pytest 测试目录路径
4.4 指定执行测试文件
pytest Test/test_case.py #pytest 测试文件路径
4.5 指定执行的测试文件类
pytest Test/test_case.py::Test #pytest 测试文件::测试类
会执行该测试类下的所有测试用例
4.6 指定执行测试方法
pytest Test/test_case.py::Test::test_case1 #pytest 测试文件::测试类::测试方法
会执行指定的测试方法
5、自动生成html测试报告
pytest.main(['-v','-s','--html=report.html'])
默认在当前文件夹自动生成report.html文件
如果在生成html时遇到No log output captured的情况,可以尝试在main中增加'--capture=sys'
pytest.main(['-v','-s','--html=report.html','--capture=sys'])标签:入门,--,pytest,测试用例,test,执行,html,python3 From: https://blog.51cto.com/u_15949224/6031710