python3+requests库框架设计06-测试脚本

在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件

把配置文件改成这样 url:https://www.sojson.com/open/api/weather/json.shtml

在TestCase文件夹下新建test_weathere.py文件,输入以下代码

import unittest
from Logs.log import log1
from Common.Base_test import webrequests

class weather(unittest.TestCase):

    def test_weather(self):
        '''查询天气'''
        case_name = '查询天气'
        log1.info("执行测试用例:%s" % case_name)
        try:
            weather = webrequests()#初始化测试基类的实例
            url = weather.config_get('test','url',url='')#获取配置文件中的url
            payloda = {'city':'上海'}
            status_code,response_json =weather.get(url,params=payloda)#调用封装的get方法,接收状态码和相应内容
            message = weather.getdict(response_json,'message')#调用迭代字典方法,获得message字段的值
            test1 = self.assertEqual(status_code,200)#断言状态码等于200
            test2 = self.assertEqual(message,'Success !')#断言message字段的值等于'Success !'
            if test1 == None and test2 ==None: #如果两个断言结果都等于None
                log1.info("测试通过")
        except BaseException as f :
            log1.error("测试用例执行出错: %s" % case_name,exc_info=1)
            raise

这里要注意的是unittests的断言结果,成功是不返回值的,也就是None,并不是True。还有使用了try...except之后,一定要raise异常。不然之后使用HTMLTestRunner生成测试报告的时候,如果执行失败,因为异常不抛出是当做正常处理了,就不会记录在失败的里面的。其实一个项目的话,请求成功没成功,可以封装成一个方法。响应内容会比较统一。当然如果要断言其他结果的还是要单独写。

在项目下新建entrance.py文件,输入以下代码并执行

import TestCase.test_weather

import unittest
if __name__ == "__main__":
    suite = unittest.TestSuite()
    suite.addTest(TestCase.test_weather.weather('test_weather'))
    runner = unittest.TextTestRunner()
    runner.run(suite)

测试用例的编写都是在TestCase这个文件夹下面,而测试用例的执行数量,执行顺序是在entrance.py文件中进行配置的

现在的项目结构如下图

猜你喜欢

转载自blog.csdn.net/a54288447/article/details/81087980
今日推荐