python接口自动化-实战(第二阶段)

2019-10-11  本文已影响0人  DayBreakL

再次强调,因为视频中实战地址已无法访问,建议大家根据原理,用自己公司的业务逻辑、代码来练手。本人公司使用pyhon2.7,所以语法可能与3.x不同

目标

复习单元测试

使用unittest,测试我们自己封装的http请求类-HttpRequest,目的一:学习如何进行单元测试,目的二:写出咱们的各个接口。

引入ddt

引入ddt的目的是为了数据分离、数据驱动测试。所谓数据驱动,从它的定义来看,就是数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变。说的直白些,就是参数化的应用。值得注意的是,ddt适用于测试数据是列表嵌套列表或者列表嵌套字典。

添加字段存入测试结果

1.result字段存放response.json()

添加:DoExcel().write_back_data(test_data_path,"Sheet1",item["case_id"]+1,str(res.json))

# encoding: utf-8
import json
import unittest
from common.public.http_request import HttpRequest
from ddt import ddt,data
from common.public.do_excel import DoExcel
from common.public.project_path import *

test_data=DoExcel().get_data(test_data_path,"Sheet1")

@ddt
class TestHttpRequest(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass
    @data(*test_data)
    def test_login(self,item):
        res=HttpRequest().http_request(item["url"],item["method"],eval(item["payload"]))
        self.assertEqual(str(item["expected"]),str(res.status_code))  
        #将res.json写入excel中
        DoExcel().write_back_data(test_data_path,"Sheet1",item["case_id"]+1,str(res.json)) 
        print "获得的结果是:", res.json()

2.新增一个TestResult字段存放测试结果

与result字段不同,result字段存放的是response.json(),TestResult字段存入Pass/Failed,表示用例成功还是失败。写入excel后可以直接通过excel筛选,只查看为Failed的用例

用例可配置

实现多个用例同时执行、多个模块同时执行

配置文件效果:

[MODE]
mode={"login":"all",
      "register":[1,2,4,5],
      "recharge":[1,2]
      }

通过option和value,配置不同的用例,option是对应的模块(使用不同的sheet放置不同的模块,对应sheetname),value的all代表该模块所有用例,列表里的数字代表case_id,

import configparser

class ReadConfig:

    @staticmethod
    def get_config(file_path,setion,option):
        cf=configparser.ConfigParser()
        cf.read(file_path)
        return cf[setion][option]
        
if __name__ == '__main__': #测试
    from common.public import project_path
    print ReadConfig.get_config(project_path.case_config_path,"MODE","mode")

控制台输出:

image
上一篇下一篇

猜你喜欢

热点阅读