• python+requests+unittest 搭建接口自动化测试框架(五)


    每个接口用一个单独的测试文件  test01case.py

    import os
    import sys
    sys.path.append(os.getcwd())
    import unittest
    from common.configHttp import RunMain
    import paramunittest
    # paramunittest是unittest实现参数化的一个专门的模块,可以传入多组参数,自动生成多个用例
    # 前面讲数据驱动的时候,用ddt可以解决多组数据传入,自动生成多个测试用例
    import geturlParams
    import urllib.parse
    # import pythoncom
    import readExcel
    # pythoncom.CoInitialize()
     
    url = geturlParams.geturlParams().get_Url()# 调用我们的geturlParams获取我们拼接的URL
    login_xls = readExcel.readExcel().get_xls('userCase.xls', 'login')
    # [['login', '/login', 'name=xiaoming&pwd=1111', 'post']]
    @paramunittest.parametrized(*login_xls)
    class testUserLogin(unittest.TestCase):
        def setParameters(self, case_name, path, query, method):
            """
            set params
            :param case_name:
            :param path
            :param query
            :param method
            :return:
            """
            self.case_name = str(case_name)
            self.path = str(path)
            self.query = str(query)
            self.method = str(method)
            
        def description(self):
            """
            test report description
            :return:
            """
            self.case_name
     
        def setUp(self):
            """
            :return:
            """
            print(self.case_name+"测试开始前准备")
     
        def test01case(self):
            self.checkResult()
     
        def tearDown(self):
            print("测试结束,输出log完结
    
    ")
     
        def checkResult(self):# 断言
            """
            check test result
            :return:
            """
            url1 = "http://127.0.0.1:8888"+self.path+"?"
            new_url = url1 + self.query
            data1 = dict(urllib.parse.parse_qsl(self.query))# 将一个完整的URL中的name=&pwd=转换为{'name':'xxx','pwd':'bbb'}
            info = RunMain().run_main(self.method, url, data1)# 根据Excel中的method调用run_main来进行requests请求,并拿到响应
            if self.case_name == 'login':# 如果case_name是login,说明合法返回的code应该为200
                self.assertEqual(info['code'], 200)
            if self.case_name == 'login_error':# 同上
                self.assertEqual(info['code'], -1)
            if self.case_name == 'login_null':# 同上
                self.assertEqual(info['code'], 10001)
    
    if __name__ == '__main__':
        unittest.main()

     把url封装为一个类:

    geturlParams.py

    import os
    import sys
    sys.path.append(os.getcwd())
    from readConfig import ReadConfig
     
    class geturlParams:# 定义一个方法,将从配置文件中读取的进行拼接
        def  __init__(self):
            self.readconfig = ReadConfig()
        def get_Url(self):
            new_url = self.readconfig.get_http('scheme') + '://' + self.readconfig.get_http('baseurl') + ':8888' + '/login'
            #logger.info('new_url'+new_url)
            return new_url
     
    if __name__ == '__main__':# 验证拼接后的正确性
        print(geturlParams().get_Url())
  • 相关阅读:
    《算法竞赛入门经典》—— 5.2.6 栈、队列与优先队列
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    《算法:C语言实现》—— 第二部分 —— 第3章 —— 基本数据结构
    Broken Keyboard (a.k.a. Beiju Text)
    Broken Keyboard (a.k.a. Beiju Text)
    Broken Keyboard (a.k.a. Beiju Text)
    mongodb实战聚合 组内排序
    mongodb实战聚合 组内排序
    MongoDB基础篇:MongoDB Shell命令大全
  • 原文地址:https://www.cnblogs.com/huaniaoyuchong/p/13920341.html
Copyright © 2020-2023  润新知