关于python实现接口测试自动化的实践

      亲测们,项目一开始直接使用jmeter 实现了接口自动化的测试需求(后面有空的话给亲们解说),然而计划赶不上变化啊,放着好好地方便不用,非得来点硬的,用python代码实现,得唻,搞就搞,谁怕谁。

    下面先介绍下我的目录层级结构,比较简单,没有大的项目那么复杂。

        common里面放了一些自己封装的函数,和有一些常用的变量;token文件最主要登陆的时候保存了下参数,用来传递德纳,知识有限,还没有想到别的好方法;

        login里面就是测试用例;

        package 里面放了一个第三方模块HTML_TestRunner;

        run里面放了执行文件和一个生成报告的文件;

如果不想看简介,可以以自己看代码的啦,https://github.com/Jinfei920029/Interface_test_sfm1里面的InterfaceTest,当然了里面还有别的项目,包涵包涵.....

        

       

直接上代码罗

https://github.com/Jinfei920029/Interface_test_sfm1 里面的InterfaceTest

1.第一个case其实很简单:获取token后保存文件里面,其他的请求需要token的话直接来拿,我就直接截图了,代码到项目InterfaceTest里面下载,都是开源可看的

 

import requests
import unittest
from testPlan.common.commonFun import Login_Element,Fun


class MyTest(unittest.TestCase):        #封装测试环境的初始化
    def setUp(self):
        print("start test")
        pass


    def test_01_Login1(self):
        #开始第一个get请求获取sessionid和sessiondata
        self.url1 = Login_Element.login_url1
        params1 = Login_Element.params1
        self.params1 = params1
        response1 = requests.get(url=self.url1, params=self.params1)
        print("status_code1:" + str(response1.status_code))
        sessionid = Fun.getSessionId(response1.text)
        self.sessionid = sessionid
        sessiondata = Fun.getSessionData(response1.text)
        self.sessiondata = sessiondata
        #开始第二个post请求
        self.url2 = Login_Element.login_url2
        message2 = {"sessionId": sessionid, "sessionData": sessiondata}
        message2_2 = Fun.merge_Two_Dicts(Login_Element.message2, message2)
        header2 = Login_Element.header2
        print(message2_2)
        print(type(message2_2))
        response2 = requests.post(url=self.url2, data=message2_2, headers=header2)
        print("status_code2:" + str(response2.status_code))
        #获取token请求
        self.url3 = Login_Element.login_url3
        message3 = {"sessionId": sessionid}
        header3 = Login_Element.header3
        response3 = requests.post(url=self.url3, data=message3, headers=header3)
        print("status_code3:" + str(response3.status_code))
        print("token:" + response3.text)
        token_info = Fun.re_write(response3.text)
        Fun.save_to_jsonfile('../common/token.json', token_info)
    def tearDown(self):
        print("end test")
        pass


if __name__=="__main__":
    unittest.main()

 

2.run脚本是用来运行的,加载case一起执行,然后输出到html报告里面去,注意case层级目录不要用中文,不要有空格;

 

import unittest,time
import os
import sys
sys.path.append(os.path.abspath(os.path.dirname(os.getcwd())))
from testPlan.packages.HTMLTestRunner import HTMLTestRunner

test_dir = '../case'
discover = unittest.defaultTestLoader.discover(test_dir, pattern='test*.py')

if __name__ == '__main__':
    now = time.strftime("%Y-%M-%D %H_%M_%S")
    filename = 'result.html'
    fp = open(filename,'wb')
    runner = HTMLTestRunner(stream=fp,
                            title='Test report',
                            description='用例执行情况:')
    runner.run(discover)
    fp.close()

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值