本人是一个后端程序员,对测试感兴趣,所以了解了一下这个pytest,目前还处于摸索阶段,以下写的都是亲自验证过的。
安装介绍:
pytest是一个成熟的python的单元框架。
可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化
pytest可以实现测试用力的跳过以及returns失败用例重试
pytest可以和allure生成非常美观的测试报告
拥有非常强大的插件。
pytest
pytest-html (生成Html格式的自动化测试报告)
pytest-xdist (测试用例分布式执行,多cpu分发)
pytest-ordering (用于改变测试用力的执行顺序)
pytete-rerunfailures (用例失败后重跑)
allure-pytest (用于生成美观的测试报告) 以上这些可以全部写在一个文件中,名字可以设置为:reuqirement.txt 方便统一安装。文件内容如下: pytest pytest-html pytest-xdist pytest-ordering pytest-rerunfailures allure-pytest pyyaml requests
安装命令如下:
pip install -r reuqirement.txt
pytest默认的测试用例规则和基础应用
1. 模块名必须以test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test_开头
在这里有一个很关键的文件:pytest.ini 是pyetst单元测试框架的核心配置文件
位置:一般在项目的根目录
作用:可以改变Pytest默认的行为
运行的规则:不管事主函数模式执行或命令行模式运行,都会去读取这个配置文件。
内容如下:
[pytest] addopts = -vs -W ignore::UserWarning --alluredir=./temp --clean-alluredir
testpaths = ./
python_files = test_*.py
python_classes = Test*
python_functions = test
运行方式:
. 主函数模式
参数详解:
-s:表示输出调试的信息,包括print打印的信息
-v:输出详细的信息 比如:pytest -v
-n:支持多线程或者分布式运行测试用例 比如:pytest -n 2
--reruns NULL 失败用例重跑 比如:--reruns num(这个前提是需要安装插件:pytest-rerunfailres)
-x:表示只要一个用例报错,那么测试停止 比如:pytest -vs -x
--maxfail=2 出现两个用例失败就停止 比如:pytest -vs --maxfail=2
--html 生成html的测试报告(前提安装插件:pytest-html) 比如:pytest -vs --html ./reports/result.html
-k:根据测试用例的部分字符串来指定测试用例 比如: pytest -vs -k "baidu"
或者:pytest -vs -k "baidu or xingyao"
.命令行模式
或者在命令行执行:pytest -vs test_login.py
指定文件夹执行:pytest.main(['-vs','./interface_testcase'])
通过nodeid来指定用例执行,nodeid由模块名,分隔符,类名,方法名,函数名组成。 例如test_login.py文件内容如下
import pytest
def test_02():
print("函数")
class TestLogin:
def test_01(self):
print('测试')
run.py文件内容如下:(这里的run.py放在项目根目录下面,是整个框架的启动文件)
import pytest
if __name__ == '__main__':
pytest.main(['-vs','./test_login.py::test_02']) #下面这一行代表执行类名下的某一个方法
pytest.main(['-vs','./test_login.py::TestLogin::test_01'])
最后补充一下,如果在执行的时候,遇到中文乱码问题,大家可以在需要在pytest.ini里面加一行:
disable_test_id_escaping_and_forfeit_all_rights_to_community_support = True
后续我会慢慢在补充。目前本人也是在摸索阶段,已经自己可以做接口自动化的全部流程。大家多多交流哇