IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> pytest+allure -> 正文阅读

[开发测试]pytest+allure

https://www.kdocs.cn/l/cm5SOndujMBM?from=docs&t=1640247666947&newFile=true

  1. 测试工具选型
    pytest: 是python的第三方单元测试框架,比自带unittest更简洁和高效,支持315种以上的插件,同时兼容unittest 框架。
    allure:是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。
  2. 测试工具文档
    pytest官方文档:https://learning-pytest.readthedocs.io/zh/latest/
    allure官方文档:https://docs.qameta.io/allure/
  3. 插件功能SDK
    https://p.wpseco.cn/wiki/doc/618261c833fe54743f23765e
  4. 项目第三方包的安装
    pytest
    requests
    pytest-xdist 测试用例分布式执行
    pytest-ordering 用于改变测试用例的执行顺序
    pytest-rerunfailures 用例失败重跑
    pytest-html 生成html自动化报告
    allure-pytest 生成美观的自动化报告
  5. 项目目录分层
    Common:存放个模块的共用方法
    conf:存放项目的配置信息
    outputs:存在测试日志和报告的位置
    testcase:存放测试用例的位置
    testdatas:存放测试数据的位置
  6. 重写日志模块
    重新日志模块继承logging,输出控制台和日志文件,
    日志输出到控制台
    handle1 = logging.StreamHandler()
    handle1.setFormatter(formatter)
    self.addHandler(handle1)
    日志输出日志文件
    if file:

    文件渠道

    handle2 = logging.FileHandler(file,encoding=“utf-8”)
    handle2.setFormatter(formatter)
    self.addHandler(handle2)
    设置日志输出的级别和位置
    [log]
    name = sdk
    level = INFO
    file_ok = True
    file_name = sdk.log
  7. 编写接口关键字
    def del_dept(companyId,dept_ids,header,is_verify=True):
    url = base_url + “/plussvr/api/v1/companies/”+str(companyId)+"/department"
    data = {“dept_ids”:dept_ids,“csrfmiddlewaretoken”:csrf}
    res = send_request(“delete”,url, json=data, headers=header,verify=False)
    allure.attach(join_params(url, data,header=header, response=res.text), “删除部门接口详情”, allure.attachment_type.TEXT)
    if is_verify is True:
    assert res.status_code == 200
    return res
  8. 调用接口关键字编写自动化测试用例
    @pytest.mark.wpsplus
    @allure.title(“获取部门成员”)
    def test_getdeptusers01(self,group_fixture):
    allure.dynamic.description(“获取部门成员,comp_id不为空”)
    comp_id = group_fixture[1]
    user_id = group_fixture[2]
    with allure.step(“新建部门”):
    resp = get_user_permission(comp_id,user_id,loginHeadersWithCsrf)
    rootDeptId = resp.json()[“dept_ids”][0]
    deptName = String().generate_random_string()
    resp1 = create_department(comp_id,deptName,rootDeptId,loginHeadersWithCsrf)
    with allure.step(“部门下面新建成员”):
    deptId = resp1.json()[“info”][“id”]
    userName = String().generate_random_string()
    comp_uid_resp = createUser(comp_id,userName,userName,deptId,superPasswd,3,loginHeadersWithCsrf)
    comp_uid = []
    comp_uid.append(comp_uid_resp.json()[“comp_uid”])
    with allure.step(“获取部门下面的成员”):
    status = “active&status=notactive&status=disabled”
    resp2 = getdeptusers(comp_id,deptId,status,loginHeadersWithCsrf)
    assert resp2.json()[“data”][“total”] == 1
    assert resp2.json()[“data”][“users”][0][“account”] == userName
    assert resp2.json()[“data”][“users”][0][“name”] == userName
    assert resp2.json()[“data”][“users”][0][“role_id”] == 3
    assert resp2.json()[“data”][“users”][0][“status”] == “notactive”
    with allure.step(“删除用户和部门”):
    self.teardown_function(comp_id,comp_uid,deptId,loginHeadersWithCsrf)
  9. 用例的setup和teardown
  10. setup和teardown的使用
    setup_class 在类前执行 teardown_class在类之后执行
    setup 在每个用例之前执行 teardown 在每个用例之后执行
    2.fixture夹具的使用
    夹具一般都放在conftest.py,名称是不能更改
    通过yield分开用例前置条件和后置条件,yield也将调用该fixture的值返回
    socpe的取值
    function:每个test用例都运行,默认是function的scope
    class:每个class的所有test只运行一次
    module:每个module的所有test只运行一次
    session:每个会话运行一次

@pytest.fixture(scope=“function”,autouse=True)
def my_fixture():
print(“这是前置条件”)
yield
print(“这是后置条件”)

注:把一个函数定义为Fixture很简单,只能在函数声明之前加上“@pytest.fixture”。其他函数要来调用这个Fixture,只用把它当做一个输入的参数即可。
10. 给用例添加tag
@pytest.mark.smoke
@pytest.mark.user
通过tag选择用例进行执行测试
-m “smoke” 执行有smoke的用例
-m “smoke and user” 执行有smoke和user的用例
-m “smoke or user” 执行有smoke或者user的用例
11. 断言
assert xx :判断 xx 为真;
assert not xx :判断 xx 不为真;
assert a in b :判断 b 包含 a;
assert a == b :判断 a 等于 b;
assert a != b :判断 a 不等于 b;
12. 配置文件pytest.ini
配置pytest.ini文件,需要是 ANSI编码
[pytest]
addopts= addopts= -vs -m “debug” --reruns 3 -s --alluredir ./Outputs/temp --clean-alluredir -p no:warnings #命令行的参数,用空格分隔
testpaths = ./testcase #测试用例的路径
python_files = test_.py #模块名的规则
python_classes = Test
#类名的规则
python_functions = test #方法名的规则
marker =
smoke:冒烟测试
注:
-s :表示输出调试信息,包括print打印信息
-v:显示更详细的信息
-n :支持多线程或者分布式运行测试用例
如:pytest -vs ./testcase/test_login.py -n 2 表示2个线程
–rerune NUM:失败用例重跑 NUM指失败次数

改变测试用例的执行顺序
@pytest.mark.run(order=3)
  1. allure配置
    pip install allure-pytest
    https://github.com/allure-framework/allure2/releases 下载后解压,把bin目录添加至path环境变量
    allure --version 需要有java环境
    生成报告 -vs --alluredir ./Outputs/temp --clean-alluredir
    构建测试报告
    新建run.py #注意需要在命令行运行run.py才会生成报告
    if name == ‘main’:
    pytest.main()
    time.sleep(2)
    os.system(“allure generate ./Outputs/temp -o ./Outputs/reports --clean”)

注:如果乱码需要将pycharm也加入path环境变量里面
@allure.title(“标题1”)
def test02(self,my_fixture):
allure.dynamic.description(‘描述’)
with allure.step(“测试步骤”):
14. 测试报告的分析

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-12-24 18:47:11  更:2021-12-24 18:47:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 4:23:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码