demonszz

接口自动化项目的实现

测试过程如下:

1、接口测试项目先向测试数据库中插入测试数据(zhangsan的个人信息)

2、调用被测试系统接口(传参username="zhangsan")

3、系统接口根据传参(username="zhangsan")向测试数据库中进行查询并得到zhangsan的个人信息

4、将查询结果组装成一定格式的数据,并返回给被调用者

5、通过单元测试框架断言接口返回数据(zhangsan的个人信息),并生成测试报告

为了使正式数据库的数据不被污染,应使用独立的测试数据库。

 

举例:接口测试

import requests

#查询发布会接口

url = "http://127.0.0.1:8000/api/get_event_list/"
r = requests.get(url,params = {\'eid\':\'1\'})
result = r.json()
print(result)
assert result[\'status\'] == 200
assert result[\'message\'] == "success"
assert result[\'data\'][\'name\'] == "xx 产品发布会"
assert result[\'data\'][\'address\'] == "北京林匹克公园水立方"
assert result[\'data\'][\'start_time\'] == "2016-10-15T18:00:00"

  因为“发布会查询接口” 是 GET 类型, 所以, 通过 requests 库的 get()方法调用, 第一个参数为调用接口
URL 地址, params 设置接口的数, 参数以字典形式组织。
  json()方法可以将接口返回的 json 格式的数据转化为字典。
接下来就是通过 assert 语句对接字典中的数据进行断言。分别断言 statusmessage data 的相关数据等

举例:接口自动化测试

使用 unittest 单元测试框架开发接口测试用例。

 

#-*-coding:utf-8-*- 
import unittest

import requests

__author__ = \'Administrator\'

class GetEventListTest(unittest.TestCase):
    \'\'\'查询发布会接口测试\'\'\'
    def setUp(self):
        self.url = "http://127.0.0.1:8000/api/get_event_list/"

    def test_get_event_null(self):
        \'\'\'发布会 id 为空\'\'\'
        r = requests.get(self.url, params={\'eid\':\'\'})
        result = r.json()
        print(result)
        self.assertEqual(result[\'status\'], 10021)
        self.assertEqual(result[\'message\'], "parameter error")

    def test_get_event_success(self):
        \'\'\'发布会 id 为 1, 查询成功\'\'\'
        r = requests.get(self.url, params={\'eid\':\'1\'})
        result = r.json()
        print(result)
        self.assertEqual(result[\'status\'],200)
        self.assertEqual(result[\'message\'], "success")
        self.assertEqual(result[\'data\'][\'name\'], "xx 产品发布会")
        self.assertEqual(result[\'data\'][\'address\'], "北京林匹克公园水立方")
        self.assertEqual(result[\'data\'][\'start_time\'], "2016-10-15T18:00:00")

if __name__ == \'__main__\':
        unittest.main()
import unittest
from count import Calculator
class CountTest(unittest.TestCase):
  def setUp(self):
    self.cal = Calculator(8, 4)
  def tearDown(self):
    pass
  def test_add(self):
    result = self.cal.add()
    self.assertEqual(result,12)
  def test_sub(self):
    result = self.cal.sub()
    self.assertEqual(result,4)
  def test_mul(self):
    result = self.cal.mul()
    self.assertEqual(result,32)
  def test_div(self):
    result = self.cal.div()
    self.assertEqual(result,2)
if __name__ == "__main__":
  #unittest.main()
  # 构造测试集
  suite = unittest.TestSuite()
  suite.addTest(CountTest("test_add"))
  suite.addTest(CountTest("test_sub"))
  suite.addTest(CountTest("test_mul"))
  suite.addTest(CountTest("test_div"))
  # 执行测试
  runner = unittest.TextTestRunner()
  runner.run(suite)

单元测试用例。
  首先, 通过 import 导入 unittest 单元测试框架。
  创建 CountTest 类继承 unittest.TestCase 类。
  setUp()tearDown()在单元测试框架中比较特别, 它们分别在每一个测试用例的开始和结束执行。setUp()
方法用于测试用例执行前的初始化工作, 例如初始化变量、 生成数据库测试数据、 打开浏览器等。 tearDown()
方法与 setUp()方法相呼应, 用于测试用例执行之后的善后工作, 例如清除数据库测试数据、 关闭文件、 关闭
浏览器等。
  unittest 要求测试方法必须以“test” 开头。 例如, test_addtest_sub 等。
  接下来, 调用 unittest.TestSuite()类中的 addTest()方法向测试套件中添加测试用例。 简单的可以将测试套
件理解成运行测试用例的集合。
  通过 unittest.TextTestRunner()类中的 run()方法运行测试套件中的测试用例。
  如果想默认运行当前测试文件下的所有测试用例, 可以直接使用 unittest.main()方法。 那么 main()方法在
查找测试用例时按照两个规则。 首先, 该测试类必须继承 unittest.TestCase 类; 其次, 该测试类下面的方法必
须以“test” 开头。

接口自动化测试框架实现 :

  关于接口自动化测试, unittest 已经帮我们做了大部分工作, 接下来只需要集成数据库操作, 以及
HTMLTestRunner 测试报告生成扩展即可 .

发表于 2018-01-23 18:05  demonszz  阅读(1255)  评论(1编辑  收藏  举报
 

分类:

技术点:

相关文章:

  • 2021-07-04
  • 2021-06-13
  • 2021-08-12
  • 2021-07-16
  • 2022-01-02
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
猜你喜欢
  • 2021-11-10
  • 2021-10-06
  • 2021-08-16
  • 2021-04-09
  • 2022-01-23
  • 2021-08-17
相关资源
相似解决方案