Bootstrap

接口自动化框架搭建:python+yaml+request+pytest+allure,实现单接口自动化测试

python+yaml+request+pytest+allure,实现单接口自动化测试

之前的接口自动化中只用excel管理用例,但是用过yaml之后,恩,真香。


前言

框架思想:本框架是python+requests+yaml+pytest+allure实现接口自动化框架。结合数据驱动和分层思想,将代码与数据分离,易维护,易上手。使用yaml编写编写测试用例,利用requests库发送请求,使用pytest管理用例,allure生成测试报告。后续可能加上jenkins持续集成。


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据驱动

什么是数据驱动?
在接口测试中,测试用例可能有上百条,如果将用例全部写在代码中,一旦需要修改,将会消耗大量的时间,不容易维护。所以,我们就要测试数据,或者测试用例存储到文件中,用代码读取文件获取数据,实现数据驱动。
数据驱动分为两种:
1、参数的数据驱动
2、用例的数据驱动
数据格式的选择:

excel 生成数据方便,但是是二进制文件,不利于版本管理
yaml 格式完备,格式简单
csv 可以使用excel编辑,文本格式方便管理
yaml 格式完备,格式简单,可注释
xml 格式完备,冗长复杂
json 格式完备,格式死板,不能写注释

以上总结,选择yaml管理测试用例

二、yaml基本语法

大小写敏感
使用缩进表示层级关系
缩进时不允许使用Tab键,只允许使用空格。
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
yaml支持三种数据结构:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值

对象:animal: pets ,也可写成:hash: { name: Steve, foo: bar }
数组:

- Cat
- Dog
- Goldfish

也可写成:列表嵌套列表

-
 - Cat
 - Dog
 - Goldfish

字典与列表嵌套:

-
  id:login_02

三、读取yaml

yaml.load和safe_load()
两者区别:
safe_load()可以解析简单的数据结构,而且比较安全,load可以解析比较复杂的数据结构,通常一般使用的最多的还是load()

四、测试用例数据驱动

-
  id: login_01
  title: 登录成功
  url: member/login
  method: POST
  request_data: {
   "mobile_phone": "17866554324","pwd":"188888"}
  expect: {
   "code":0,"msg":"OK"}

读取yaml

    def read_yaml(self):
        with open(self.filename, encoding='utf-8') as fs:
            # 避免报警告:yaml.FullLoader
            data = yaml.load(fs, Loader=yaml.FullLoader)
            return data

五、参数化数据驱动

将测试用例部分数据进行参数化,比如用户名密码之类的数据。 然后将数据放入配置文件中
[case_data]
mobile_phone = 11111111111
;