requests,unittest——多接口用例,以及需要先登录再发报的用例
之前写过最简单的接口测试用例,本次利用unittest进行用例管理,并出测试报告,前两个用例是两个不同网页的get用例,第三个是需要登录才能访问的网页A,并在其基础上访问一个需要在A页面点开链接才能访问的网页B,第四个用例是直接访问网页B,下面是代码
# encoding=utf-8
import requests,unittest,HTMLTestRunner
class Testbaiduapi(unittest.TestCase):
def setUp(self):
pass
def testsearch(self):
url = "http://10.221.137.68:8180/ldp/index.jsp"
r = requests.get(url,params=None)
assert u'校验点' in r.text
def testsearch2(self):
url = "http://csp.travelsky.com/csp/login"
r = requests.get(url)
assert u'校验点' in r.text
def testsearch3(self):
params = {
"username":"用户名",
"password":"密码",
"lt":"LT-507280-fxjpCVW6a3FFcfTa6EeRbDKeDr0DHe",
"execution":"e1s1",
"submit": "登录" ,
}
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Host":"authcenter.travelsky.net:8443",
"Referer":"https://authcenter.travelsky.net:8443/authcenter/login",
}
session = requests.session()
url = "http://home.travelsky.net/publish/zghxnw/index.html"
r = session.post(url, data=params,headers=headers,verify=False)
assert u'今天我生日' in r.text
url2="http://home.travelsky.net/publish/zghxnw/847/860/863/index.html"
s = session.get(url2)
assert u'三里屯办公区' in s.text
def testsearch4(self):
params = {
"username":"用户名",
"password":"密码",
"lt":"LT-507280-fxjpCVW6a3FFcfTa6EeRbDKeDr0DHe",
"execution":"e1s1",
"submit": "登录" ,
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Accept-Language": "zh-CN,zh;q=0.8",
"Accept-Encoding": "gzip, deflate",
"Connection": "keep-alive",
"Host":"authcenter.travelsky.net:8443",
"Referer":"https://authcenter.travelsky.net:8443/authcenter/login",
}
url="http://home.travelsky.net/publish/zghxnw/847/860/863/index.html"
s = requests.post(url, data=params,headers=headers,verify=False)
assert u'三里屯办公区' in s.text
if __name__=='__main__':
report_dir= r's.html'
re_open= open(report_dir,'wb')
suite=unittest.TestLoader().loadTestsFromTestCase(Testbaiduapi)
runner=HTMLTestRunner.HTMLTestRunner(
stream=re_open,
title=u'接口测试报告',
description=u'接口测试详情'
)
runner.run(suite)
A网页抓包信息,用来填写接口信息内容

A网页的校验信息

B网页校验信息

我们第三个用例跳过登录页面直接访问登录成功后的首页,不过需要先抓包登录报文的报文头和登录信息,附在post报文上,然后我们特意用session来进行操作,这样在进行后续操作时只需要直接get目的网址就行了,比如B网页的网址,可以直接访问,当然用来测试只要在每个网页添加校验信息即可,一样可以起到测试的作用
但是如果B网页如果登录不成功,那么整个第三个用例会报错,可以预见如果在第三个用例爬取多个网页,那么其中任何一个网页有问题都会导致整个用例报错,对于测试人员排查显得太麻烦了,于是我门单独把B网页写进第四个用例,当然需要重新填写报文头和登录信息,并用post发报,因为只是爬取一个网页所以没有必要用session,只要requests即可
运行结果及报告


requests,unittest——多接口用例,以及需要先登录再发报的用例的更多相关文章
- python3+requests+unittest:接口自动化测试(一)
转载请表明出处:https://www.cnblogs.com/shapeL/p/9179484.html 简单介绍框架的实现逻辑,参考代码的git地址: https://github.com/zha ...
- 使用python+requests+unittest实现接口自动化测试
这两天一直在找直接用python做接口自动化的方法,在网上也搜了一些博客参考,今天自己动手试了一下. 一.整体结构 上图是项目的目录结构,下面主要介绍下每个目录的作用. Common:公共方法:主要放 ...
- Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架
整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport 多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...
- 转载:python + requests实现的接口自动化框架详细教程
转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由 ...
- python + requests实现的接口自动化框架详细教程
前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自 ...
- 对比3种接口测试的工具:jmeter+ant;postman;python的requests+unittest或requests+excel
这篇随笔主要是对比下笔者接触过的3种接口测试工具,从实际使用的角度来分析下3种工具各自的特点 分别为:jmeter.postman.python的requests+unittest或requests+ ...
- requests+unittest+ddt+xlrd+pymysql+BeautifulReport数据驱动
# ddcapitestpython XXX接口自动化测试 # 一.数据驱动的思路 1.采用requests+unittest+ddt+xlrd+pymysql+BeautifulReport 2.r ...
- Python3 + requests + unittest接口测试
一.缘 起 笔者最近完成了基于Python3 + requests + unittest的接口测试脚本,故在此做一下记录,于己为复盘,于彼为学习和参考 二.思 路 接口测试无非三步: 首先,造数据 - ...
- Python requests介绍之接口介绍
Python requests介绍 引用官网介绍 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. Requests 允许你发送纯天然,植物饲养的 HTTP/1. ...
随机推荐
- chromedriver linux windows各版本下载地址
taobao镜像:https://www.baidu.com/link?url=gV12RWo7v_F-BDncFNKv_Rk9jF2nMix3Z7yMd84c2QvIB0LqcwxMxTPMUyb0 ...
- PAT——1033. 旧键盘打字
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及坏掉的那些键,打出的结果文字会是怎样? 输入格式: 输入在2行中分别给出坏掉的那些键.以及应该输入的文 ...
- Linux下Java性能监控
Linux下Java性能监控 一.JVM堆内存使用监控 获取thread dump的3种方法: 1)使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun. ...
- awk 简单使用 egrep 正则表达式
[root@python ~]# cat testcount.txt a 1.1.1.1b 2.2.2.2c 3.3.3.3a 1.1.1.1d 4.4.4.4e 5.5.5.5f 6.6.6.6 1 ...
- ASP.NET Core Middleware (转载)
What is Middleware? Put simply, you use middleware components to compose the functionality of your A ...
- .NET Core中基类可以反射子类的成员
我们定义一个类DemoA,再定义一个类DemoB继承DemoA.当构造一个DemoB类对象后,我们可以通过其调用基类DemoA中的方法来反射子类DemoB的成员. 新建一个.NET Core控制台项目 ...
- 将Spring容器跟随系统启动并获取容器对象
将Spring容器随系统启动的方法: 在web.xml中配置监听器,监听的对象为ContextLoaderListener <listener> <listener-class> ...
- JDBC——释放资源的代码
public static void release(ResultSet rs, Statement statement, Connection conn) { if (rs != null) { t ...
- execute immediate
首先在这里发发牢骚,指责下那些刻板的书写方式,不考虑读者理不理解,感觉就是给专业人员用来复习用的一样,没有前戏,直接就高潮,实在受不了!没基础或基础差的完全不知道发生了什么,一脸懵逼的看着,一星差评! ...
- Mac 10.8.5 上运行cgi
搭配置搭了好久,花了近半天时间,有必要把过程记录下. 本文已同步到 icocoa.tk, 欢迎访问 Mountain Lion上Setting设置里已经取消了web share,必须要自己启动apac ...