接口自动化1.0 python+unittest

自己尝试拿自己测试的系统编写接口自动化,不断优化,不断完善,记录学习过程,以及过程中遇到的问题及解决办法。

采用的结构是python+unittest,数据驱动模式

代码的结构:

测试数据:

处理测试数据,使用tool里面的get_data.py,代码:

import openpyxl

class Do_Excel:    def __init__(self, file_name, sheet_name):        self.file_name = file_name        self.sheet_name = sheet_name

    def get_data(self):        wb = openpyxl.load_workbook(self.file_name)        sheet = wb[self.sheet_name]        test_data = []        list_data = []        for j in range(1, sheet.max_column + 1):            for i in range(1, sheet.max_row + 1):                list_data.append(sheet.cell(j, i).value)            test_data.append(list_data)            list_data = []        res = [dict(zip(test_data[0], test_data[i])) for i in range(1, len(test_data))]        return res

if __name__ == ‘__main__‘:    res = Do_Excel(‘test_data.xlsx‘, ‘python‘).get_data()    print(res[0][‘url‘])

测试用例test_cases下的test_formcenter.py 代码:
import unittestimport requestsfrom gongdan.tools.get_data import Do_Excelfrom gongdan import login

class TestForm(unittest.TestCase):    def setUp(self):        self.headers = {"Content-Type": "application/json",                   ‘Accept‘: "application/json, text/plain, */*",                   "passport": login.login()                   }

    def test_create_groups(self):        test_data = Do_Excel(r‘../test_data/test_data.xlsx‘, ‘python‘).get_data()        url = test_data[0][‘url‘]        data = eval(test_data[0][‘data‘])        res = requests.post(url, json=data,headers=self.headers)        print(res.text)        self.assertEqual(200, res.status_code)

    def test_create_form(self):        test_data = Do_Excel(r‘../test_data/test_data.xlsx‘, ‘python‘).get_data()        url = test_data[1][‘url‘]        data = eval(test_data[1][‘data‘])        res = requests.post(url, json=data, headers=self.headers)        print(res.text)        self.assertEqual(200, res.status_code)

执行测试用例,do_cases下的run_cases,代码:
import unittestimport HTMLTestRunnerNewfrom gongdan.test_cases import test_formcenter

#创建容器suite = unittest.TestSuite()

#创建加载器loader = unittest.TestLoader()

#加载用例suite.addTests(loader.loadTestsFromModule(test_formcenter))

with open(r‘D:/todo/gongdan/test_rusult/form.html‘,‘wb‘) as f :    runner = HTMLTestRunnerNew.HTMLTestRunner(stream=f,verbosity=2,title="表单中心")    runner.run(suite)

测试报告展示:

原文地址:https://www.cnblogs.com/thcly/p/11996771.html

时间: 2024-08-10 23:19:00

接口自动化1.0 python+unittest的相关文章

python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 运行完后,重新生成一个excel报告,结果写入excel 用unittest+ddt数据驱动模式执行 HTMLTestRunner生成可视化的html报告 对于没有关联的单个接口请求是可以批量执行的,需要登录的话写到setUpclass里的session里保持cookies token关联的

关于接口自动化的那些事 - 基于 Python

网络请求模拟小技巧 在学习了一段时间的Python语言后,咱也大概对Python的语法和逻辑有了一定的积累,接下来,可以为接口自动化测试开始尝试做一些比较简单的准备工作啦~跟着我一起来来来~ 扩展库requests 一般来说接口测试都是基于HTTP和HTTPS的网络请求,Python中有很多自带原生库和扩展库均可以实现.Python模拟HTTP请求有两种方式,一种是使用httplib模块,一种是使用requests模块,我个人比较倾向于使用requests库,该库把请求的框架都搭建好了,使用简洁

python接口自动化9-https请求(SSL)

前言 本来最新的requests库V2.13.0是支持https请求的,但是一般写脚本时候,我们会用抓包工具fiddler,这时候会报:requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) 小编环境: python:2.7.12 requests:2.13.0 fiddler:v4.6.2.0 一.SSL问题 1.不启用fiddler,直接发htt

python接口自动化2-发送post请求

前言 发送post的请求参考例子很简单,实际遇到的情况却是很复杂的,首先第一个post请求肯定是登录了,但登录是最难处理的.登录问题解决了,后面都简单了. 一.查看官方文档 1.学习一个新的模块,其实不用去百度什么的,直接用help函数就能查看相关注释和案例内容. >>import requests >>help(requests) 2.查看python发送get和post请求的案例 >>> import requests       >>> r

python接口自动化5-Json数据处理

前言 有些post的请求参数是json格式的,这个前面第二篇post请求里面提到过,需要导入json模块处理. 一般常见的接口返回数据也是json格式的,我们在做判断时候,往往只需要提取其中几个关键的参数就行,这时候就需要json来解析返回的数据了. 一.json模块简介 1.Json简介:Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式,常用于http请求中 2.可以用help(json),查看对应的源码注释内容 Encoding basic P

python接口自动化10-token登录

前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录. token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已:另外一种是在url请求参数里,这种更直观. 一.登录返回token 1.如下图的这个登录,无cookies 2.但是登录成功后有返回token 二.请求头带token 1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数 2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行 三.to

python接口自动化8-参数化

前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死 一.登录函数 1.s参数是session的一个实例类,先放这里,方便写后面代码 2.登录函数传三个参数,s是需要调用前面的session类,所以必传,可以传个登录的url,然后payload是账号和密码 二.保存草稿 1.编辑内容的标题title和正文body_data参数化了,这样后面可以方便传不同值 2.这里返回了

python接口自动化7-参数关联

前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿 2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以看出,传的json参数是postId 3.这个postId哪里来的呢?可以看上个请求url地址 4.也就是说保存草稿箱成功之后,重定向一个url地址,里面带有postId这个参数.那接下来我们提取出来

python接口自动化4-绕过验证码登录(cookie)

前言 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接). 获取不到也没关系,可以通过添加cookie的方式绕过验证码. 一.抓登录cookie 1.登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了. 2.可以先手动登录一次,然后抓取这个cookie,这里就需要用抓包工具fiddler了 3.先打开博客园登录界面,手动输入账号和密码(勾选下次自动登录) 4.打开fiddler抓包工具,刷