一、单元测试框架
1.什么是单元测试框架
单元测试框架是在自动化测试或者白盒测试中对软件的最小单元(函数,方法)进行测试的 框架。
2.单元测试框架分类
Python:unittest,pytest(主流)
Java:Testng(主流)和Junit
3.单元测试框架主要做什么?
'''
发现测试用例
执行测试用例
判断测试结果
生成测试报告
'''
二、Pytest简介以及常用插件安装
'''
1.pytest是一个非常成熟的单元测试框架。灵活和简单。
2.它可以结合selenium,requests,appium完成各种不同的自动化。
3.它还可以生成自定义allure报告以及和Jenkins持续集成。
4.pytest有很多强大的插件。
pytest
pytest-html(生成html报告的插件)
pytest-xdist(多线程运行的插件)
pytest-ordering(改变用例的执行顺序的插件)
pytest-rerunfailures(失败用例重跑的插件)
allure-pytest(生成美观自定义的allure报告)
通过在项目的根目录下新建一个:requirements.txt文件保存插件。然后通过以下命令安 装:
pip install -r requirements.txt
'''
三、pytest默认测试用例的规则以及基础应用
'''
1.模块名必须以test_开头或者_test结尾。
2.测试类必须以Test开头,并且不能带有init方法。
3.测试用例必须以test_开头。
__执行:Alt+Enter自动导包。
'''
运行方式
'''
1.通过命令行方式执行。 pytest
执行的参数:
-vs -v输出详细信息。-s输出调试信息。如:pytest -vs
-n 多线程运行。(前提安装插件:pytest-xdist) 如:pytest -vs -n=2
--reruns num 失败重跑(前提安装插件:pytest-rerunfailres) 如:pytest -vs -- reruns=2
raise Exception() 抛出异常
try except 解决异常
-x 出现一个用例失败则停止测试。如:pytest -vs -x
--maxfail 出现几个失败才终止 ,如:pytest -vs --maxfail=2
--html 生成html的测试报告(前提安装插件:pytest-html),如:pytest -vs --html ./reports/result.html
-k 运行测试用例名称中包含某个字符串的测试用例。
? 如:pytest -vs -k "baili or xingyao"
2.通过主函数main方式执行。
if __name__ == '__main__':
pytest.main(["‐vs"])
3.通过全局配置文件pytest.ini文件执行。
注意:
一般放在项目的根目录下,名称必须是pytest.ini
当有中文时可能需要改变编码格式为GB2312
pytest.ini文件可以改变默认的测试用例规则。
不管是命令行运行也好还是说主函数运行也好,都会加载这个配置文件。
[pytest]
#参数
addopts = -vs -m "smoke"
testpaths = ./atuotest
python_files = test_*.py
python_classes = Test*
python_functions = test_*
#标记
markers =
smoke:冒烟用例
product_manage:商品管理
user_manage:用户管理模块
这里-m "smoke"表示只执行冒烟用例。
'''
四、pytest跳过测试用例。
'''
(1)无条件跳过
@pytest.mark.skip(reason="无理由跳过")
(2)有条件跳过
@pytest.mark.skipif(workage<10,reason="工作经验少于10年跳过")
内卷:劳动力。
功能测试岗位。
技术:内卷不严重。
精通。
'''
五、pytest测试用例的前后置,固件
'''
class CommonUtil:
def setup_class(self):
print("每个类之前执行一次")
def teardown_class(self):
print("每个类之后执行一次")
def setup(self):
print("每个用例之前执行一次")
def teardown(self):
print("每个用例之后执行一次")
'''
六、使用fixtrue实现部分前后置
'''
@pytest.fixture()
scope:作用域
? function:在函数之前和之后执行
? class:在类之前和之后执行
? package/session:在整个项目会话之前和之后执行。
autouse:自动执行。默认是False.
'''
'''
@pytest.fixture(scope="function",autouse=True)
def exe_database_sql():
print("执行SQL查询")
yield
print("关闭数据库连接")
'''
如果希望在另外一个py文件中调用需要结合contest.py文件使用。
作者:吴常文 出处:https://editor.csdn.net/md?not_checkout=1&articleId=122405853 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
|