zoukankan      html  css  js  c++  java
  • pytest测试框架实战一

    目录

    参考链接

    https://docs.pytest.org/en/stable/ 3

    注意

    起名字,类,包或者方法,都最好不要起关键字的名字,比如 os,sys, http , appium, selenium

    自动化测试用例的设计基本原则

    1. 1.一个用例为一个完整的场景,从用户登录系统到 最终退出并关闭浏览器

      2.一个用例只验证一个功能点,不要试图在用户登录系统后把所有功能都验证一遍

      3.尽可能少的编写逆向逻辑用例。一方面因为逆向逻辑的用力很多(例如,手机号输错有几十种情况),另一个方面自动化脚本本身比较脆弱,复杂的逆向逻辑用例实现起来比较麻烦且容易出错。

      4.用例与用例之间尽量避免产生依赖

      5.一条用例完成测试之后需要对测试场景进行还原,以免影响其他用例的执行

    pytest介绍

    pytest测试用例的识别、运行

    pytest 框架结构

    • import pytest 类似的setup,teardown同样更灵活,
    • 模块级(setup_module/teardown_module)模块始末,全局的( 优先最高 )
    • 函数级(setup_function/teardown_function)只对函数用例生效(不在类中)
    • 类级(setup_class/teardown_class)只在类中前后运行一次(在类中)
    • 方法级(setup_method/teardown_methond)开始于方法始末(在类中)
    • 类里面的(setup/teardown)运行在调用方法的前后

    Pytest 常用参数解析

    pytest/py.test [包名] 执行包下所有的用例
    pytest -v 打印详细运行日志信息
    pytest -s s是带控制台输出结果,也是输出详细
    pytest -k "add” 匹配所有名称中包含add的用例,可以使用 and ,or , not等逻辑运算
    pytest -m [标记名] @pytest.mark.[标记名] 将运行有这个标记的测试用例
    pytest -x 文件名 一旦运行到报错就停止 运行
    pytest - -maxfail=[num] 当运行错误达到num的时候就停止 运行
    pytest 文件名.py 执行单独一个pytest模块
    pytest 文件名.py::类名 运行某个模块里面某个类
    pytest 文件名.py::类名::方法名 运行某个模块里面某个类里面的方法
    pytest  --collect-only 给定配置下显示那些用例会运行只收集用例,而不执行

    @pytest.mark.xfail

    @pytest.mark.skipif(1 == 2, reason='skip赋值给变量,可多处调用')

    pytest --junitxml=path 生成执行结果xml文件

    pytest 包名执行某个包 

    pytest --junitxml="./default"
    pytest --setup-show 回溯fixture的执行过程

    Pytest fixture 用法

    fixture 用法

    • Fixture 是为了测试⽤例的执⾏,初始化⼀些数据和⽅法
      • 实现了 unittest ⾥面的 setUp, tearDown 功能,但⽐ setUp, tearDown 更灵活
      • 直接通过函数名字调⽤或usefixtures
      • 允许使用多个fixture
      • 使用 autouse,如果要返回值,需要传fixture函数名
      • -setup-show 回溯 fixture 的执行过程

    fixture 作用域

    • fixture 里面有一个参数 scope,通过 scope 可以控制 fixture 的作用范围,根据作用范围大小划分:session> module> class> function,具体作用范围如下:
        • function 函数或者方法级别都会被调用
        • class 类级别调用一次
        • module 模块级别调用一次
        • session 是多个文件调用一次(可以跨.py文件调用,每个.py文件就是module)

    conftest.py 用法

    • conftest.py配置需要注意:
      • conftest.py文件名是不能换的
      • conftest.py与运行的用例要在同一个package下,并且有__init__.py文件
      • 不需要import导入conftest.py,pytest用例会自动查找
      • 所有同目录测试文件运行前都会执行conftest.py文件
      • 全局的配置和前期工作都可以写在这里,放在某个包下,就是这 个包数据共享的地方。
      • 如果不同层级的包下都有conftest.py文件,那么内层目录的conftest.py文件中的方法会覆盖外部的conftest.py文件中的方法(重名的方法)

    Pytest 参数化与数据驱动

    pytest 常用插件

    课后作业: 1、补全计算器(加减乘除)的测试用例 2、使用数据驱动完成测试用例的自动生成 3、conftest.py中创建fixture 完成setup和teardown 4、在调用测试方法之前打印【开始计算】,在调用测试方法之后打印【计算结束】

     

  • 相关阅读:
    ES6变量的解构赋值
    ES6新增内容
    Rvalue references
    range-based for statement
    Space in Template Expression, nullptr, and auto
    Type Alias、noexcept、override、final
    Variadic Template
    =default =delete
    为什么不要特化函数模版?
    boost::noncopyable 的作用
  • 原文地址:https://www.cnblogs.com/zwldyt/p/13099970.html
Copyright © 2011-2022 走看看