前言:其实这篇写的是pytest的测试框架运用,实现自动化和https://www.cnblogs.com/Jack-cx/p/9357658.html 原理一致
1.为啥不用unittest
Pytest相对Unittest更加灵活一点,unittest需要写类继承unittest.TestCase类,pytest不需要可写可不写类,也支持生成html测试报告
2.创建工程
&对比上面robot的工程,增加一个PyUnit目录和report,这里主要放单元测试框架其他实现思路一致,report放执行后生成的html报告
3.新建测试用例
&可以看出单元测试框架命名规则风格其实都是一致的,调用“底层“写的一个方法去读execel运行测试用例
4.pytest运行用例规则
&深入研究请百度,下面只让你能独立写一个自动化工程的目的
1.文件已 test_开头 test_*.py
2.类已Test_开头 class Test_login()
3.方法已test_开头 def test_login()
5.初始化和清理的方法使用
- fixture函数可以使用在测试函数中,测试类中,测试文件中以及整个测试工程中。
- fixture支持模块化,fixture可以相互嵌套
- fixture支持参数化
- fixture支持unittest类型的setup和teardown
1)模块级(setup_module/teardown_module)开始于模块始末:在所有测试用例开始执行setup_module和所有用例执行结束后执行teardown_module
2)类级(setup_class/teardown_class)开始于类的始末:在当前测试类的开始与结束执行
3)类里面的(setup/teardown)(运行在调用函数的前后)
4)功能级(setup_function/teardown_function)开始于功能函数始末(不在类中):用于每个测试用例开始执行时执行setup_function和在每个用例执行结束后执行teardown_function
5)方法级(setup_method/teardown_method)开始于方法始末(在类中):在每个测试方法开始与结束执行
&本次以UI自动化为例,只用到的setup_method每次用例执行先调用浏览器打开网址
细节可参考:https://www.cnblogs.com/ranxf/p/7766229.html讲的比较细
6.多种运行测试用例
&运行目录下所有测试用例
Dos下 到Pyunit下执行 py.test –html=需要生成的report路径
&运行执行某个py文件里的用例
Dos下 到Pyunit下执行 py.test 文件名.py –html=需要生成的report路径
&运行类里的某个方法
pytest -v test_a.py::TestClass::test_method
&运行指定的类中所有方法
pytest -v test_a.py::TestClass
&组合运行
pytest -v test_a.py::TestClass test_b.py:: test_method
7.断言
简单断言,用例执行完返回一个True或False assert==True,是True则通过,否则失败