点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快Pytest的入门操作使用Pytest特点非常容易上手入门简单文档丰富文档中有很多实例可以参考能够支持简单的单元测试和复杂的功能测试支持参数化执行测试过程中可以将某些测试跳过skip或者对某些预期失败的case标记成失败支持重复执行(rerun)失败的 case支持运行由 nose, unittest 编写的测试 case可生成html报告方便的和持续集成工具jenkins集成可支持执行部分用例具有很多第三方插件并且可以自定义扩展安装直接执行 如下命令即可安装pytestpip install pytest我们还需要产生测试报表所以要安装一个第三方插件pytest-html执行如下命令安装pip install pytest-htmldef func(x): return x 3 def test_answer(): assert func(3) 6 class TestClass: def test_01(self): print(\n用例01) assert 1 1 def test_02(self): print(\n用例02) assert 2 2 def test_03(self): print(\n用例03) assert 3 2然后cmd进入当前文件目录直接执行pytestPS D:\Lemon\py45\webatuotest\pytest_learn pytest .\test_learn01.py test session starts platform win32 -- Python 3.9.7, pytest-6.2.5, py-1.10.0, pluggy-1.0.0 rootdir: D:\Lemon\py45\webatuotest\pytest_learn plugins: allure-pytest-2.9.43, anyio-3.3.2, html-3.1.1, metadata-1.11.0 collected 4 items test_learn01.py ...F [100%] FAILURES ___________________________________________________________ TestClass.test_03 ___________________________________________________________ self test_learn01.TestClass object at 0x0000023FFB6743D0 def test_03(self): print(\n用例03) assert 3 2 E assert 3 2 test_learn01.py:27: AssertionError --------------------------------------------------------- Captured stdout call ---------------------------------------------------------- 用例03 short test summary info FAILED test_learn01.py::TestClass::test_03 - assert 3 2 1 failed, 3 passed in 0.21s PS D:\Lemon\py45\webatuotest\pytest_learn注意如果只执行pytest会查找当前目录及其子目录下以test_*.py 或 *_test.py文件找到文件后在文件中找到以 test 开头函数并执行如果只想执行某个文件可以pytest start.py加上-q就是显示简单的结果pytest -q start.py如果我们希望 显示测试代码中print的内容因为这些打印语句在调试代码时很有用可以加上命令行参数 -s如下pytest -s如果我们希望得到更详细的执行信息包括每个测试类、测试函数的名字可以加上参数 -v这个参数可以和 -s 合并为 -sv如下pytest -sv为了防止pytest到其他目录中找测试用例项执行测试时我们可以在命令行加上目标目录 cases 就是这样pytest casespytest运行方式 测试类主函数模式 # test_abc.py import pytest # 引入pytest包 def test_a(): # test开头的测试函数 print(-------test_a) assert 1 # 断言成功 def test_b(): print(-------test_b) assert 0 # 断言失败 if __name__ __main__: # pytest.main(-s test_abc.py) 早期版本是这样的执行的 pytest.main([-s, test_abc.py]) # 调用pytest的main函数执行测试命令行模式运行# pytest 文件路径测试文件名 pytest ./test_abc.pyPytest用例的设计原则用Pytest写用例时候一定要按照下面的规则去写否则不符合规则的测试用例是不会执行的文件名以test_*.py文件和*_test.py以 test_ 开头的函数以 Test 开头的类不能包含__init__ 方法所有的包 package 必须要有__init__.py文件Pytest之并发执行在Pytest测试框架中提供了pytest-xdist可以并发执行测试用例来提升测试用例的执行速度。通常的情况下测试用例的执行都是依据一定的规则来按顺序进行执行这样的结果是每次执行的时候有的资源就只能被一个测试用例占用而达不到测试用例执行的时候资源的共享插件pytest-xdist插件可以很好的解决这个问题一方面资源达到共享基于第一点的考虑也就达到了第二点的提升了测试执行的效率。安装pytest-xdist插件 pip install pytest-xdist使用 pytest -n auto 默认自动检查系统cpu个数然后进行并发也可以指定并发数 pytest -n 2 即并发数2执行pytest的重复执行安装pip3 install pytest-repeat命令行方式使用–count命令行选项来指定您要运行一个或多个测试的次数pytest --count 10 test.py代码方式如果要在代码中将测试标记为重复多次则可以使用# pytest.mark.repeat(count)装饰器 import pytest pytest.mark.repeat(3) def test_example(): print(执行成功)重复测试直到失败有时候功能模块不稳定会存在一些错误可以将 -x 与 pytest-repeat 一起用强制运行器在第一次测试失败时停止py.test --count1000 -x test.pyrepeat-scope的使用命令行参数作用能够覆盖默认的测试用例执行顺序相似fixture的scope参数function默认范围针对每一个用例重复执行再执行下一个用例class以class为用例集合单位重复执行class里面的用例再执行下一个pytest -s --count2 --repeat-scopeclass test_Class.pymodule以模块为单位重复执行模块里面的用例再执行下一个pytest -s --count2 --repeat-scopemoudle test_Class.pysession重复整个测试会话即全部测试用例的执行一次而后再执行第二次产生报告前面在安装pytest我们也安装了pytest-html插件这个插件就是用来产生测试报告的。要产生报告在命令行加上 参数--htmlreport.html --self-contained-html如下pytest cases --htmlreport.html --self-contained-html这样就会产生名为report.html的测试报告文件可以在浏览器 中打开最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。