zoukankan      html  css  js  c++  java
  • 利用unittest+ddt进行接口测试(一):简单demo

    一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向、逆向等多种组合。所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别。

    这个时候就可以利用ddt来管理测试数据,提高代码复用率。

    先看一个简单的demo

    # coding: utf-8
    # author: Archer
    
    import unittest
    import ddt
    import requests
    import HTMLTestRunner
    
    # 接口参数,用列表[]包裹起来,每组数据则是字典格式
    test_data = [{
        "clientCode": "",
        "topic": "测试接口",
        "content": "测试接口",
        "resrcType": "0",
        "assert": "200"   # assert并不是接口需要的参数,是为了对返回结果进行断言而加在这里的预期结果
    },
        {
            "clientCode": "",
            "topic": "测试接口2",
            "content": "测试接口2",
            "resrcType": "0",
            "assert": "400"
        },
        {
            "clientCode": "",
            "topic": "",
            "content": "测试接口2",
            "resrcType": "0",
            "assert": "400"
        }]
    
    
    @ddt.ddt
    class Test(unittest.TestCase):
        def setUp(self):
            self.url = 'http://192.168.X.XXX:7001/XXX/api/XXXise/info/XXX/save.v'
    
        @ddt.data(*test_data)
        def test_ddt(self, value):   # 定义一个变量value来接收ddt.data中的数据
            r = requests.post(self.url, value)
            print(r.json())
            self.assertTrue(value['assert'] in r.text)   # 利用参数组合中的assert参数进行断言
    
    
    if __name__ == '__main__':
        unittest.main()

    可以看到,虽然只写了一条用例,但是却执行了3次,根据传参不同,得到不同的结果,相当于3条用例。

    我这里只是用了ddt.data,ddt还有其他的装饰方法,如:ddt.file_dataddt.unpack

    关于ddt的详细介绍可以看看这篇博客:https://www.cnblogs.com/miniren/p/7099187.html和https://blog.csdn.net/wushuai150831/article/details/78453549,写的比较全面


     2018-04-28 23:15:27

  • 相关阅读:
    好久没来园子里转了,最近在学ssh,有个小问题提出来
    ClearType使用的问题
    Metro中访问特定设备的方法
    UMDF驱动程序快速上手
    关于GPS使用上的一个怪异问题
    一个不能创建WINCE6.0工程的问题
    Metro开发小记
    在WINPE中添加驱动
    DOS命令活用
    METRO开发中的多语言处理
  • 原文地址:https://www.cnblogs.com/hanmk/p/8969973.html
Copyright © 2011-2022 走看看