单元测试是指在软件开发当中,针对软件的最小单位(函数,方法)进行正确性的检查测试。
java:junit和testng
python:unittest和pytest
封装自动化基础模块 管理模块 统计模块等来进行一个指定系统的自动化测试。
单元测试框架:只是自动化测试框架中的组成部分之一
还包含:
1.pytest是一个非常成熟的python的单元框架,比unittest更灵活。
2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化。
3.pytest可以实现测试用例的跳过以及reruns(失败用例重试)。
4.pytest可以和allure生成非常美观的测试报告。
5.pytest可以和Jenkins持续集成
6.pytest有很多非常强大的插件,并且这些插件能够实现很多的实用的操作。
例如:
pip install -r requirements.txt
1.模块名必须以test_开头或者_test结尾。
2.测试类必须以Test开头,并且不能有init方法。
3.测试方法必须以test开头。
运行所有函数
pytest.main
运行指定函数
pytest.main(['-vs','test_login.py'])
运行指定目录
pytest.main(['-vs','./interface_testcase'])
通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。
pytest.main(['-vs','./interface_testcase/test_interface.py::test_04_func'])
pytest.main(['-vs','./interface_testcase/test_interface.py::TestInterface::test_03_jiekou'])
运行所有函数
pytest
运行指定模块
pytest -vs test_login.py
运行指定目录
pytest -vs ./interface_testcase
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更相信的信息
-vs:两个参数一起用
-n:支持多线程或者分布式运行测试用例
如:
pytest.main(['-vs','./testcase','-n=2'])
pytest -vs -testcase/test——login.py -n 2
–reruns NUM:失败用例重跑
-x:只要有一个用例报错,测试停止
–maxfail NUM :用例失败NUM次就停止
-k:根据测试用例的部分字符串指定测试用例
-html ./report/report.html:生成测试报告
pytest.ini这个文件他是pytest单元测试框架的核心配置文件
[pytest]
addopts = -vs #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_ files = test_*.py #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
unittest:ascll的大小来决定的执行的顺序
pytest:默 认从上到下
改变默认的执行顺序:使用mark标记。
@pytest.mark.run(order=1)
smoke:冒烟用例,分布在各个模块里面
pytest -m“smoke” #执行smoke
pytest -m“smoke or usermanage” #执行smoke和usermanage模块
1.无条件跳过
@pytest.mark.skip(reason="无条件“)
2.有条件跳过
@pytest.mark.skipif(age>=18,reason="已成年")