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完结\n\n")
 
    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())

 

posted @ 2020-11-03 15:02  天天眠眠  阅读(126)  评论(0编辑  收藏  举报