通过Postman请求结果如下图:

那我们怎么用pytest进行测试呢?

在接口测试,我们要用到requests包,实现代码如下:

import pytest
import allure
import requests class TestSimple(object):
def TestWatcher(self):
url = "http://wthrcdn.etouch.cn/weather_mini?city=成都"
r = requests.get(url)
assert r.status_code == 200
d = r.json()
print(d)

简述:上面通过request实现了天气的查询,对其请求状态做了验证(如果HTTP状态码为200则认为测试通过),并对接口请求结果进行了打印。

执行上面代码时遇到问题:No tests were found

结果问题查询:pytest 启动文件名是以test开头,函数名是以test开头。所以我们把上面的函数名改下,把TestWacher改为testWacher再去执行,效果如下:

相比于状态码,我们可能更喜欢进行关键字校验,如 查询结果中没有wendu字段,则视为用例失败怎么实现?

此时可以使用pytest的xfail标记用例预期失败,如果用例运行成功则显示Xpassed,失败则显示xfailed。xfail标记并不会影响用例的运行。
添加代码如下:

if ('wendu' not in d['data'].keys()):
pytest.xfail('返回结果不正确,wendu=NULL')

假设我们要检查的字段是 wendi,而结果中没有该字段,此时执行效果如下:

如果我们在执行时,如何让报告显得更漂亮呢?这时我们可以进行美化,最终代码如下:

@allure.feature("测试Dome")
class TestSimple(object):
@allure.story("天气查询")
@allure.description('一个免费的天气查询接口测试')
@allure.severity('critical')
def testWatcher(self):
url = "http://wthrcdn.etouch.cn/weather_mini?city=成都"
with allure.step("查询天气"):
r = requests.get(url)
assert r.status_code == 200
d = r.json()
print(d)
if ('wendu' not in d['data'].keys()):
pytest.xfail('返回结果不正确,wendu=NULL')

常见allure报告美化总结:

@allure.feature(“测试用例特性场景(主要功能模块)”)
@allure.story(“feature功能模块下的分支功能(用例名称)”)
@allure.description(“这里是用例的描述信息”)
@allure.severity(“测试用例等级”)
说明:allure对用例的等级划分成五个等级

  • blocker – 阻塞缺陷(功能未实现,无法下一步)
  • critical – 严重缺陷(功能点缺失)
  • normal – 一般缺陷(边界情况,格式错误)
  • minor – 次要缺陷(界面错误与ui需求不符)
  • trivial – 轻微缺陷(必需项无提示,或者提示不规范)

allure.description_html(html代码) #提供一些HTML在测试用例的描述部分
@allure.step(“用例步骤说明”)
使用方法:
①@allure.step() 只能以装饰器的形式放在类或者方法上面;
②with allure.step(): 可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含;
allure.attach(body, name, attachment_type, extension)
用于向测试报告中输入一些附加的信息,通常是一些测试数据信息,参数说明:

  • body - 要写入文件的原始内容
  • name - 包含文件名的字符串
  • attachment_type - 其中一个allure.attachment_type值,可以是文本、图片、HTML等
  • extension - 提供的将用作创建文件的扩展名

@allure.link(“URL=链接地址”)
@allure.issue(“URL=问题链接”)
@allure.testcase(“URL=用例链接”)

最后执行用例,并生成allure报告:


点击特性场景,进入详情,结果如下:

上面就实现了一个简单的pytest接口测试例子,但怎么参数化,怎么让代码层次更清晰,要不要这么low b?请关注小编后续文章。


另外,欢迎加入软件测试技术交流群 313782132 ~进群可领取免费软件测试资料以及群内测试大牛解惑!

测试工程师职业发展路线图

功能测试 — 接口测试 — 自动化测试 — 测试开发 — 测试架构师

加油吧,测试人!如果你需要提升规划,那就行动吧,在路上总比在起点观望的要好。事必有法,然后有成。

资源不错就给个推荐吧~

pytest接口测试轻松入门的更多相关文章

  1. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18)

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/10/103014.html Groovy轻松入门--通过与Java的比较,迅速掌握Groovy ...

  2. Groovy轻松入门——搭建Groovy开发环境

    摘自: http://www.blogjava.net/BlueSUN/archive/2007/03/17/104391.html Groovy轻松入门--搭建Groovy开发环境 多日来,我发表了 ...

  3. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  4. Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)

    转载请务必注明出处(all copyright reserved by iOSGeek) 本文主要分为两个部分,第一部分介绍Swift的基本语法,第二部分讲解一个利用WebView来打开百度.sina ...

  5. JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

    本章默认大家已经看过作者的前一篇文章 <JavaScript面向对象轻松入门之抽象> 为什么要封装? 封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对 ...

  6. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

  7. AngularJs轻松入门

    AngularJs轻松入门系列博文:http://blog.csdn.net/column/details/angular.html AngularJs轻松入门(一)创建第一个应用 AngularJs ...

  8. Groovy轻松入门——通过与Java的比较,迅速掌握Groovy

    转自 :Groovy轻松入门——通过与Java的比较,迅速掌握Groovy (更新于2008.10.18) 在前几篇文章中,我已经向大家介绍了Groovy是什么,学习Groovy的重要性等内容,还不了 ...

  9. Git轻松入门2:分支篇

    什么是分支 在玩剧情类游戏时,不同的选择会触发不同的剧情路线,每条剧情路线都会独立发展,最终走向不同的结局. Git中所谓的"分支(branch)"就如同游戏中的剧情路线,用户可以 ...

随机推荐

  1. FL Studio钢琴卷轴之工具菜单的Riff命令

    鼠标左键点击FL Studio钢琴卷轴窗口中的"工具"命令,我们就可以打开快捷工具菜单.快捷菜单中包含了用于音符编辑的各种工具.按照该菜单的顺序,我们先来看一下什么是Riff器命令 ...

  2. 关于Camtasia2020安装完成之后无法运行问题的解决方法

    在录像编辑软件Cmtasia更新到了2020版本之后,有部分小伙伴们遇到了这样的问题:在我们安装好软件之后,居然无法运行.今天小编就给大家介绍一下该如何解决这个问题. 方法一: 第一步,选中桌面上Ca ...

  3. objetive-C中属性变量和成员变量

    属性变量 @property和@synthesize可以自动生成某个类成员变量的存取方法. readwrite:这个属性是默认的情况,会自动生成存取器 assign:这个属性一般用来处理基础类型,比如 ...

  4. canvas 元素覆盖&穿透问题

    给网站添加canvas动态背景.完后发现有a标签无法点击,想到是canvas覆盖了(但有些是可以的).网上查找,有解决穿透的问题,但canvas的鼠标事件会无效.后发现是定位问题. canvas样式 ...

  5. CentOS7系统tab命令补全

    在新安装的CentOS7系统中,如果没有安装命令补全的话,在systemctl管理服务的时候就没法用tab来自动补全,因此在安装完系统后,我们要再安装命令补全这个软件: yum -y install ...

  6. 推荐系统实践 0x0b 矩阵分解

    前言 推荐系统实践那本书基本上就更新到上一篇了,之后的内容会把各个算法拿来当专题进行讲解.在这一篇,我们将会介绍矩阵分解这一方法.一般来说,协同过滤算法(基于用户.基于物品)会有一个比较严重的问题,那 ...

  7. 【原创】Linux虚拟化KVM-Qemu分析(七)之timer虚拟化

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: KVM版本:5.9 ...

  8. PyQt(Python+Qt)学习随笔:model/view架构中QTableView视图的标题显示不正常问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在进行QTableView展示数据时,使用了QStandardItemModel的model,并在将 ...

  9. Linux的一些基本操作

    1. 解压,对于tar格式和zip格式不同,后者是unzip test.zip ,如果要解压到指定路径是 unzip test.zip -d ../

  10. js实现跳转的几种方式

    1. window.open("url"); 2.用自定义函数 <script> function openWin(tag,obj) { obj.target=&quo ...