在项目文件中创建一个common文件夹, 用来进行统一接口封装
import requests
class RequestUtil:
# 调用底层的requests.session()方法进行封装
sess = requests.session()
def all_send_request(self, method, url, **kwargs):
result = self.sess.request(method, url, **kwargs)
return result
默认的pytest测试用例规则
pytest 可以 结合 selenium、appium、requests 分别实现 web自动化,app自动化,接口自动化
pytest 本身
pytest-html 生成html报告
pytest-xdist 多线程执行用例
pytest-ordering 控制测试用例的执行顺序
pytest-rerunfailures 失败用例重跑
allure-pytest 生成美观的allure报告
当我们想一次性下载多个插件时, 我们会创建一个requirements.txt文件, 文件内容大概如下
然后在终端中输入命令
pip install -r requirements.txt[文件名]
按下回车,即可安装文件中所输入的插件
import pytest
if __name__ == "__main__":
pytest.main()
raise Exception("reruns测试异常重跑!!!!")
pytest --reruns=2
pytest --html="./reports/report.html"
@pytest.fixtrue(scope="作用域", params="参数化", autouse="自动执行", ids="参数名别名", name="fixture别名" )
@pytest.fixture(scope="function", autouse=False)
def connect_database():
print("链接数据库")
yield # 生成器,获取它的后置处理结果
print("关闭数据库")
# 单独调用,只在一个函数中生效
def test_001(self, connect_database):
"""
:param connect_database: fixture执行函数
:return:
"""
print("测试001号函数")
@pytest.fixture(scope="function", autouse=False, params=[["name", "百里"], ["age", 18]])
def connect_database(request):
print("链接数据库")
yield request.param # 当有参数化时的固定写法,在后置使用函数中打印即可
print("关闭数据库")