一、pytest单元测试框架
1)什么是单元测试框架
单元测试是指再软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。
2)单元测试框架
java:junit和testing
python:unittest和pytest
3)单元测试框架主要做什么?
1.测试发现:从多个文件里面去找到我们测试用例
2.测试执行:按照一定的顺序和规则去执行。并生成脚本
3.测试判断:通过断言判断预期结果和实际结果的差异
4.测试报告:统计测试进行,耗时,通过率,生成测试报告
二、单元测试框架和自动化测试框架有什么关系?
1)什么是自动化测试框架
2)作用
1.提高测试效率,降低维护成本
2.减少人工干预,提高测试的准确性,增加代码的重用性
3.核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
三、pytest简介
1.pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手
2.pytest可以和selenium,request,appium结合实现web自动化,接口自动化,app自动化
3.pytest可以实现测试用例的跳过以及reruns失败用例重试
4.pytest可以和allure生成非常美观的测试报告
5.pytest可以和Jenkins持续集成
6.pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作
pytest-html(生成html格式的自动化测试报告)
pytest-xdist(测试用例分布式执行,多CPU分发)
pytest-ordering (用于改变测试用例的执行顺序)
pytest-rerunfailures (用例失败后重跑)
allure -pytest(用于生成美观的测试报告)
四、使用pytest,默认的测试用例的规则以及基础应用
1.模块名必须以test_开头,或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头
五、pytest测试用例的运行方式
1.主函数模式
1)运行所有:pytest.main()2)指定模式:pytest.main(['-vs','test_login.py'])
3)指定目录:pytest.main(['-vs','./interface_testcase'])
4)通过nodeid指定用例运行:nodeid由模块名,分隔符 ,类名,方法名,函数名组成。
pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])
//运行test_04_func函数pytest.main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_zhiliao'])
//运行TestInterface类中的est_03_zhiliao方法
2.命令行模式1)运行所有:pytest
2)指定模式:pytest -vs test_login.py
3)指定目录:pytest -vs ./interface_testcase
4)通过nodeid指定用例运行:nodeid由模块名,分隔符 ,类名,方法名,函数名组成。
pytest -vs ./interface_testcase/test_interface.py::test_04_func
//运行test_04_func函数pytest -vs ./interface_testcase/test_interface.py::TestInterface::test_03_zhiliao
//运行TestInterface类中的est_03_zhiliao方法
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:两个参数可以一起用(还可以再命令行里使用)-n:支持多线程或者分布式运行
--reruns NUM:失败用例重跑
-x:只要用一个用例报错,测试就停止
--maxfail=2:出现两个用例报错,测试就停止
-k:根据测试用例的部分字符串指定测试用例
pytest -vs ./testcase -k "ao" //只允许包含ao的用例