一.用例

TestCase 也就是测试用例

TestSuite 多个测试用例集合在一起,就是TestSuite

TestLoader是用来加载TestCase到TestSuite中的

TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

import unittest
def calc(a,b):
return a/b class TestCalc(unittest.TestCase):
  def test_calc1(self): #test开头才能运行,并且按照_后面的字母顺序执行
    '''测试正常的'''
# result = calc(2,1)
# self.assertEqual(2,result,'除法运算不正确') #不正确的时候出信息
  def setUp(self):#每条用例执行之前都会执行它
  print('我是setup')   def tearDown(self):#每条用例执行之后都会执行它
  print('我是teardown')
  @classmethod        #所有用例最开始之前
  def setUpClass(cls):
  print('我是setupClass')   @classmethod #所有用例结束后
  def tearDownClass(cls):
  print('我是tearDownClass')
#unittest.main() #运行当前文件里面的所有测试用例
二.发送报告
导入模块HTMLTestRunner,复制到external libraries
复制BeautifulReport
import HTMLTestRunner
import BeautifulReport as bf
#产生不好看的报告
# f = open('report.html','wb')
# runner = HTMLTestRunner.HTMLTestRunner(stream=f,
# description='测试报告里面的描述',
# title='接口测试报告')
# test_suite = unittest.makeSuite(TestCalc) #把这个类变成一个测试集合
# runner.run(test_suite)#运行用例 #产生好看的报告
test_suite = unittest.makeSuite(TestCalc) #把这个类变成一个测试集合
runner = bf.BeautifulReport(test_suite)
runner.report(filename='new_report.html',description='描述')
三.参数化
    pip install nose-parameterized
def login(username,password):
return 'ok' import unittest
from parameterized import parameterized
class TestLogin(unittest.TestCase):
@parameterized.expand([
['admin','1244','ok'],
['admin','1244','ok'],
['admin','1244','success'],
['admin','1244','success'],
])
def test_login1(self,username,password,hope):
'''登录'''
result = login(username,password)
self.assertEqual(hope,result)
# unittest.main()
四.查找测试用例,并生成报告
import unittest
import BeautifulReport
tests = unittest.defaultTestLoader.discover('case','*.py')
#去哪个目录下查找测试用例
runner = BeautifulReport.BeautifulReport(tests)
runner.report(description='查找测试用例',filename='all_report.html') 五.有关联关系
import unittest
import requests
import BeautifulReport
from urllib.parse import urljoin class TestChoice(unittest.TestCase):
base_url = 'http://api.nnzhp.cn/' def login(self):
uri = '/api/user/login'
url = urljoin(self.base_url,uri)
data = {'username':'niuhanyang','passwd':'aA123456'}
print('开始登录',data)
response = requests.post(url,data).json()
print('调用登录接口结束,返回结果',response)
self.assertIsNotNone(response.get('login_info'),'登录失败')
#校验非空
session_id = response['login_info']['sign']
user_id = response['login_info']['userId']
return session_id,user_id def choice(self,session_id,user_id):
uri = '/api/product/choice'
url = urljoin(self.base_url,uri)
data = {'userid':user_id,'sign':session_id}
print('抽奖接口开始=====',data)
response = requests.get(url,params=data).json()
print('抽奖接口结束=======',response)
self.assertIsNotNone(response.get('product_info'),'抽奖失败') def add_product(self,session_id,user_id):
uri = '/api/product/add'
url = urljoin(self.base_url,uri)
data = {'userid':user_id,'sign':session_id,'name':'iphoneXs max'}
files = {'file':open(r'/Users/nhy/Downloads/aaa.jpg','rb')}
response = requests.post(url,data,files=files).json()
self.assertEqual('添加成功',response.get('msg')) def test_login_choice(self):
'''测试抽奖流程的,先登录后抽奖'''
session_id,user_id = self.login()
self.choice(session_id,user_id) def test_login(self):
'''测试登录的'''
self.login() def test_add_product(self):
'''测试添加商品的'''
session_id,user_id = self.login()
self.add_product(session_id,user_id) # unittest.main()
runner = BeautifulReport.BeautifulReport(unittest.makeSuite(TestChoice))
runner.report('接口测试','interface.html')

 

接口自动化(unittest)的更多相关文章

  1. 接口自动化--unittest

    今天我介绍一个测试框架:不管我们是做接口自动化还是UI自动化,我们都要用的一个框架---unittest unittest是python里面的一个单元测试框架,我们做自动化测试的话,都是要用到这个测试 ...

  2. 基于Python的接口自动化-unittest测试框架和ddt数据驱动

    引言 在编写接口自动化用例时,我们一般针对一个接口建立一个.py文件,一条接口测试用例封装为一个函数(方法),但是在批量执行的过程中,如果其中一条出错,后面的用例就无法执行,还有在运行大量的接口测试用 ...

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

    可以参考 python+requests接口自动化完整项目设计源码(一)https://www.cnblogs.com/111testing/p/9612671.html 原文地址https://ww ...

  4. python接口自动化24-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

  5. python接口自动化-有token的接口项目使用unittest框架设计

    获取token 在做接口自动化的时候,经常会遇到多个用例需要用同一个参数token,并且这些测试用例跨.py脚本了. 一般token只需要获取一次就行了,然后其它使用unittest框架的测试用例全部 ...

  6. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  7. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(已弃用)

    前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请 ...

  8. 接口自动化-python unittest+requests+HTMLrunner

    从2015年毕业入行软件测试,快满4年了,之前技术分享都在百度贴吧上面,现在正式开始在博客中记录工作技术,努力成长,加油 接口测试的步骤1.组装好该接口需要的参数数据2.使用get或post附带参数数 ...

  9. unittest接口自动化测试报告

    unittest接口自动化测试报告 展示: 代码: __author__ = "Wai Yip Tung, Findyou" __version__ = "0.8.2.1 ...

  10. Python+excel实现的简单接口自动化 V0.1

    好久没写博客了..最近忙着工作以及新工作的事.. 看了下以前写的简单接口自动化,拿出来总结下,也算记录下学习成果 先来贴一下最后的结果,结果是写在原来的excel中 执行完毕后,会将结果写入到“状态” ...

随机推荐

  1. go https json

    好吧,再来一个看起来高档点的吧 自从知道 Go有本地调用后,我就回到windows了 哈哈,以下内容,均在win10下搞定 预备:先做两个文件,服务器端的私钥KEY和公钥证书 1. openssl g ...

  2. IdentityServer4:Endpoint

    Endpoint的概念在IdentityServer里其实就是一些资源操作的url地址:如同Restful API里面的Endpoint是概念: 那么可以通过你自己的授权服务端得到相对应的地址与信息: ...

  3. 巧用CurrentThread.Name来统一标识日志记录(完结篇)

    ▄︻┻┳═一Agenda: ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录 ▄︻┻┳═一巧用CurrentThread.Name来统一标识日志记录(续) ▄︻┻┳═一巧用Cur ...

  4. Unity3d vector3.forward和transform.forward的区别!

    原文连接: http://blog.csdn.net/kaluluosi111/article/details/17206655 在unity3d中有2个forward,一个是vector3.forw ...

  5. @AfterThrowing

    @AfterThrowing(throwing="ex", pointcut="within(com.xms.controller.*)") public vo ...

  6. RNN通俗理解

    让数据间的关联也被 NN 加以分析,我们人类是怎么分析各种事物的关联,?最基本的方式,就是记住之前发生的事情. 那我们让神经网络也具备这种记住之前发生的事的能力. 再分析 Data0 的时候, 我们把 ...

  7. JDK源码调试常见错误。

    1.删除不需要的代码,即swing相关的代码 2.执行命令时要将前提环境进入文件夹如下: 起初没有完全执行第一条,因为网上说可以根据需要选择相关的代码,于是就没有删除,以后第一次模仿网上的例子的时候要 ...

  8. 【转载】C# 中的委托和事件(详解:简单易懂的讲解)

    本文转载自http://www.cnblogs.com/SkySoot/archive/2012/04/05/2433639.html C# 中的委托和事件(详解) C# 中的委托和事件 委托和事件在 ...

  9. Runtime(IV) - 序列化与反序列化

    准备条件 父类 Biology Biology.h #import <Foundation/Foundation.h> @interface Biology : NSObject { NS ...

  10. python将一个列表的元素随机打乱

    java可以用Collections.shuffle(List)来实现,python怎么实现呢? python要利用random模块的shuffle方法 代码如下: import random x = ...