用例设计原则
  • py文件名以test_开头或者_test结尾
  • 函数名以test_开头
  • 类名以Test开头,并且不能有init初始化方法
  • 所有的包pakege必须有_init_.py文件
 
pycharm设置pytest 运行
settings → Tools → Python Integrated Tools → Testing / 将 default test runner 设置为pytest
 
pytest用例-Config类
config类的方法
base_url:base_url 指定
variables:全局变量指定
export:指定导出的测试用例会话变量暴露出来设为全局变量
pytest用例导包
 
#导包
from httprunner import HttpRunner # httprunner类,测试基类
from httprunner import Config #config类
from httprunner import Step # 用例步骤
from httprunner import RunRequest #请求
from httprunner import RunTestCase # 引入测试用例
HttpRunner类
#httprunner类源码部分
class HttpRunner(object):
config: Config
teststeps: List[Step]
...
'''
httprunner类的属性config 指向了 Config类,teststeps指向了list里面的Setp
'''
#config类源码
class Config(object):
def __init__(self, name: Text):
self.__name = name # 初始化name变量,传入用例名称
self.__variables = {} # 全局变量
self.__base_url = "" #base_url
self.__verify = False #https证书开关
self.__export = [] #全局变量提取
self.__weight = 1 caller_frame = inspect.stack()[1]
self.__path = caller_frame.filename '''
以上初始化变量,除了name是直接传入
其余变量在源码中下方都有对应的同名的函数处理,所有我们用Config类的时候
Config是链式调用,类传入用例名称,其余的直接调用对应方法
'''
 
pytest用例编写
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase

# 继承Httprunner类
class TestLogin(HttpRunner):
config = (Config('登录用例') # 用例名称
.base_url('https://xxx-xxx.com') # 域名地址
.verify(False) # https验证开关
.variables(**{'user': 'test', 'pwd': 123456}) # 全局变量
.export('token') # 将token设置为全局变量
)
# 测试步骤,是一个list,里面可以有多个步骤用例
teststeps = [
Step( # 每一个step,代表一个用例 # RunRequest类用来发送请求
RunRequest('step-login') # 步骤名称
.post('/') # 请求方式 / 接口地址
.with_data({'username': '$user', 'password': '$pwd'}) # 请求参数
# 返回值提取
.extract()
# 返回值使用jmespath表达式提取: 表达式,变量名
.with_jmespath('body.token', 'token') # 断言
.validate()
.assert_equal('body.code', 0, message='code不正确')
)
]
RunRequest(测试步骤)
#get请求
.with_params(**{'page':1,'size':2}) #post请求 Content-Type:application/x-www-form-urlencoded
.with_data({'page':1,'size':2})
#post请求 Content-Type:application/json
.with_json({'page':1,'size':2})
RunTestCase导入用例

from .publish_test import TestCasePublish  # 导入要引入的用例类

#在步骤中引入
Step(
RunTestCase("step-登录")
.call(TestCasePublishstatus) # 导入用例类
.export(*['uid']) #要提取的变量 )
 

7.httprunner-pytest风格用例的更多相关文章

  1. Pytest执行用例报Hint: make sure your test modules/packages have valid Python names.

    近日,使用Pytest+Appium 实现APP端UI自动化,遇到Pytest收集用例失败的情况. 报错信息如下: test_room.py:None (test_room.py) ImportErr ...

  2. pytest 给用例打标签

    1.给用例添加自定义标签命令:@pytest.mark.tagname     #tagname是自定义的标签名 import pytest class TestClass(): @pytest.ma ...

  3. pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named 'XXX'异常的解决办法

    一.问题描述 在项目根目录下执行整个测试用例,直接从conftest.py模块中抛出了ModuleNotFoundError:No module named 'TestDatas'的异常: 二.解决方 ...

  4. pytest执行用例:明明只写了5个测试用例, 怎么收集到33个!?

    pytest收集测试用例的顺序: 同一个项目中搜索所有以test_开头的测试文件.test_开头的测试类.test_开头的测试函数 执行测试用例的顺序: 是按照先数据(0~9)>再字母(a~z) ...

  5. pytest 失败用例重试

    https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html http://www.lxway.com/445949491.htm https: ...

  6. pytest之收集用例规则与运行指定用例

    前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...

  7. Pytest权威教程26-示例和自定义技巧

    目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stack ...

  8. Pytest学习笔记(二) 用例执行规则

    在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k ...

  9. pytest文档32-allure描述用例详细讲解

    前言 pytest+allure是最完美的结合了,关于allure的使用,本篇做一个总结. allure报告可以很多详细的信息描述测试用例,包括epic.feature.story.title.iss ...

随机推荐

  1. Java开发学习(二十四)----SpringMVC设置请求映射路径

    一.环境准备 创建一个Web的Maven项目 参考Java开发学习(二十三)----SpringMVC入门案例.工作流程解析及设置bean加载控制中环境准备 pom.xml添加Spring依赖 < ...

  2. Java SE 11 新增特性

    Java SE 11 新增特性 作者:Grey 原文地址:Java SE 11 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...

  3. 【c语言简单算法】1-阶乘

    求n的阶乘 算法要求 从键盘输入一个数,求出这个数的阶乘 代码实现 #include main() { double result=1; size_t n; scanf("%d", ...

  4. Spring5事务管理

    事务管理是什么? 相当于过滤器,如果这一进程中上一个操作正常执行完后提交数据已经发生改变,但是下一个操作中出现了异常,这样就会影响数据的查看. 典型例子:银行转账,甲方已经转钱给乙方(甲方已扣钱),乙 ...

  5. 二极管1N4148和1N4007的区别

    二极管1N4148和1N4007的定义 1N4148 是开关二极管,耐压100V,电流150mA,反向恢复速度快,为nS级别. 1N4007 是普通整流二极管,耐压1000V,电流1A ,反向恢复时间 ...

  6. 新增 Oracle 兼容函数-V8R6C4B0021

    KingbaseES V8R6C4B0021新增加以下Oracle 兼容函数. 一.bin_to_num Oracle bin_to_num 函数用于将二进制位转换成十进制的数. 1.传入参数 tes ...

  7. KingbaseES R3 集群pcp_attach_node 更新show pool_nodes中节点状态

    系统环境: 操作系统: [kingbase@node2 bin]$ cat /etc/centos-release CentOS Linux release 7.2.1511 (Core) 数据库: ...

  8. C语言[char**]与[malloc]的组合使用

    简介 首先!要搞懂char**是什么? 我们知道 char* 是字符指针,是一个地址,指向一个字符串. 那么 char** 就是指向 char* 的指针,也是一个地址,指向指针的指针. 使用char* ...

  9. 使用Elasticsearch Operator快速部署Elasticsearch集群

    转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...

  10. Elasticsearch:significant terms aggregation

    在本文中,我们将重点关注significant terms和significant text聚合.这些聚合旨在搜索数据集中有趣和/或不寻常的术语,这些术语可以告诉您有关数据的隐藏属性的更多信息.此功能 ...