测试框架pytest的使用,可集成AirtestIDE的测试代码
使用测试框架的好处:
管理测试用例、提供断言方法、输出HTML测试报告。
测试文件以 test_开头(以_test结尾也可以)
测试类以Test开头,并且不能带有init方法
测试函数以test_开头
下载
pip3 install pytest -i https://pypi.tuna.tsinghua.edu.cn/simple
导包
import pytest
运行pytest.main()
import pytest class TestPytestFirst(object): """docstring for TestPytestFirst""" def test_01(self): print(‘这是第一条用例‘) assert 1 == 1 def test_02(self): print(‘这是第二条用例‘) assert 1 ==‘1‘ if __name__ == ‘__main__‘: pytest.main()
控制台没有打印print() 输出,如需显示请添加以下参数:
pytest.main([‘-s‘,‘-v‘])
如果希望运行指定的测试文件,可以把文件全名放到列表list里面:
pytest.main([‘-s‘,‘-v‘,‘my_test.py‘])
和unittest一样用setup()和teardown()
import pytest class TestPytestFirst(object): """docstring for TestPytestFirst""" # 打开浏览器 def setup_class(self): print("=====setup_class()执行=====") # 关闭浏览器 def teardown_class(self): print("=====teardown_class()执行=====") def test_01(self): print(‘这是第一条用例‘) assert 1 == 1 def test_02(self): print(‘这是第二条用例‘) assert 1 ==‘1‘ # 用例执行前的初始化 def setup(self): print(‘这是在用例执行之前做的事‘) # 用例执行完的处理 def teardown(self): print(‘这是在用例执行之后做的事‘) if __name__ == ‘__main__‘: pytest.main([‘-s‘,‘-v‘,‘myScripts_test.py‘])
用例默认顺序是按照什么执行?
用例之间的顺序是文件之间按照ASCLL码排序,文件内的用例按照从上往下执行。
pytest默认按字母顺序去执行的(小写英文--->大写英文--->0-9数字)
setup_module->setup_class->setup_function->testcase->teardown_function->teardown_class->teardown_module
可以通过第三方插件pytest-ordering
实现自定义用例执行顺序
官方文档: https://pytest-ordering.readthedocs.io/en/develop/
注意:一旦设置了自定义的执行顺序,就必须得延伸
@pytest.mark.run(order=1)
里面的order
字段
pip3 install pytest-ordering -i https://pypi.tuna.tsinghua.edu.cn/simple
应用方式:
第一个执行:@ pytest.mark.run(order=1)
第二个执行:@ pytest.mark.run(order=2)
倒数第二个执行:@ pytest.mark.run(order=-2)
最后一个执行:@ pytest.mark.run(order=-1)
代码:
import pytest class TestPytestFirst(object): """docstring for TestPytestFirst""" # 打开浏览器 def setup_class(self): print("=====setup_class()执行=====") # 关闭浏览器 def teardown_class(self): print("=====teardown_class()执行=====") @pytest.mark.last def test_01(self): print(‘这是order=2用例‘) assert 1 == 1 @pytest.mark.run(order=1) def test_02(self): print(‘这是order=1用例‘) assert 1 ==‘1‘ # 用例执行前的初始化 def setup(self): print(‘这是在用例执行之前做的事‘) # 用例执行完的处理 def teardown(self): print(‘这是在用例执行之后做的事‘) if __name__ == ‘__main__‘: pytest.main([‘-s‘,‘-v‘,‘myScripts_test.py‘])
pytest.ini
[pytest] python_files=test_*.py *_test.py python_classes=Test* python_functions=test_*
附录
python3.x下应该改为如下方式:
import importlib
?
importlib.reload(sys)
yaml模块的使用
import yaml
#打开要读取的文件 [{} ,{}]
stream = open(‘../data/login.yaml‘,‘r‘)
#读取文件数据
data = yaml.load(stream,yaml.FullLiader)
测试框架pytest的使用,可集成AirtestIDE的测试代码
原文:https://www.cnblogs.com/MarlonKang/p/15171220.html