zoukankan      html  css  js  c++  java
  • 接口自动化测试 python+request+excel(一)

    注:

      学习python自动化测试,需要先学习python基础,主要还是多敲代码,多联系,孰能生巧,你也会是一名合格的程序员

      python基础学习:

        http://c.biancheng.net/python/

        https://www.runoob.com/python3/python3-tutorial.html

    编写接口自动化测试,你要了解掌握他的库,比如下面最重要的两个库,unittest和requests;

      官方文档:https://docs.python.org/3/library/unittest.html    unittest

      官方文档:http://2.python-requests.org/zh_CN/latest/user/quickstart.html  requests

    掌握这两个库,相信做接口测试是完全没问题的。

    接口测试post(接口测试有很多种写法,能成功就OK)

     1 # coding:utf-8
     2 import unittest,time 
     3 import requests
     4 import re
     5 
     6 host = "http://192.168.0.175:8080"
     7 
     8 
     9 def login(s,username,psw):
    10         url = host+"/login.jsp"
    11 
    12         headers = {
    13         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
    14         "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    15         "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
    16         "Accept-Encoding": "gzip, deflate",
    17         "Referer": host+"/zentao/user-login.html",
    18         #"Cookie":  # 头部没登录前不用传cookie,因为这里cookie就是保持登录的
    19         "Connection": "keep-alive",
    20         "Content-Type": "application/x-www-form-urlencoded",
    21         }
    22 
    23         data = {'os_username': 'admin',
    24                 'os_password': '123456',
    25                 'os_destination': '',
    26                 'user_role': '',
    27                 'atl_token': '',
    28                 'login': '%E7%99%BB%E5%BD%95'
    29                 }
    30 
    31         # s = requests.session()   不要写死session
    32 
    33         r1 = s.post(url, data=data, headers=headers)
    34         return r1.content
    35 
    36 def is_login_sucess(res):
    37         if "登录失败,请检查您的用户名或密码是否填写正确。" in res:
    38                 return False
    39         elif "parent.location=" in res:
    40                 return True
    41         else:
    42                 return False
    43 
    44 if __name__ == "__main__":
    45         s = requests.session()
    46         a = login(s,"admin","123456")
    47         print(is_login_sucess(a))    

    封装接口:post和get(要搭建接口自动化测试框架,进行封装可以更加方便)

    import requests
    import json
    class RunMain:
        def send_get(self, url, data):
            res = requests.get(url=url, params=json.dumps(data).json()
            return res
    
        def send_post(self, url, data):
            res =requests.post(url=url, data=json.dumps(data)).json()
            return res
    
        def run_main(self, url, method, data=None):
            if method == 'POST':
                res = self.send_post(url, data)
            else:
                res = self.send_get(url, data)
            return res
    
    if __name__ == "__main__":
        url = 'http://192.168.0.157:18005/oauth/token'
        data = {
                'clientId': 'XXXXXXXXXXXXXXXXX',
                'password': '123456',
                'userName': 'admin',
                'VerificationCode': '',
                'VerificationCodeKey': "XXXXXXXXXXXXXXXXXX"
            }
        test = RunMain()
        print(test.run_main(url, 'POST', data))

    运行可以得出返回参数

     返回参数还可以进行美化,就像Navicat一样

    class RunMain:
        def send_get(self, url, data):
            res = requests.get(url=url, params=data).json()
            #return res
            return json.dumps(res, indent=2, sort_keys=False, ensure_ascii=False)
    
        def send_post(self, url, data):
            res =requests.post(url=url, data=json.dumps(data)).json()
            #return res
            return json.dumps(res,indent=2, sort_keys=False, ensure_ascii=False)
    

      结果得到返回参数

     每天学一点,未来是你的

  • 相关阅读:
    安装驱动后链接DB
    将man文件导出为文本的脚本
    mysql中的DELIMITER
    存储过程模版(mysql)
    struts学习总结
    Java 反射和内省实现spring的IOC和DI
    JDK动态代理
    js跨域
    mysql函数
    正则表达式
  • 原文地址:https://www.cnblogs.com/hemingwei/p/11543243.html
Copyright © 2011-2022 走看看