python入门(二十一):基于文件的接口自动化框架

Posted suitcases

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python入门(二十一):基于文件的接口自动化框架相关的知识,希望对你有一定的参考价值。

1、接口测试过程中,最耗费时间的是什么?

组织测试用例、如果入参数量多的话,整理入参比较耗时、对接口文档、参数耗时、分析log定位问题、需要加解密参数、返回字段的验证、很多接口返回参数作为其他接口入参(关联)

 

2、安装pip

进入到D:\Python36\Scripts目录下,执行easy_install pip命令安装pip

安装成功后,输入pip,显示使用命令则为安装成功。

  

3、安装requests包

pip install requests安装最新版本的requests包

 

4、请求注册的接口:e1_send.py

#encoding=utf-8

import requests

import json

import os

import hashlib # hashlib模块提供了多个不同的安全哈希算法的通用接口,可实现加密解密

 

print ("register------")

data = json.dumps(‘username‘: ‘wulaoshi‘, ‘password‘: ‘wulaoshi12345‘, ‘email‘: ‘[email protected]‘)                  #将字典类型的参数转换为json串

r = requests.post(‘http://39.106.41.11:8080/register/‘, data= data)

#接口文档中定义了http使用方法是post,只有使用post才能提交请求

#post方法需要两个参数,一个是发post请求的地址,即接口的提交地址

#‘http://39.106.41.11:8080/register/‘,是接口的提交地址,http://是协议,39.106.41.11是ip,

#8080是端口

#data= data,post要提交的数据放在这里面

print (r.status_code)          #打印一下http协议返回的状态码,只要请求成功,都是200

print (r.text)                 #响应体的body,text表示使用的是unicode编译法,返回的是一个 unicode 型的文本数据

print (type(r.json()))          #将返回的内容,转换为字典对象

print (str(r.json()))            #最后转换为字符串

 

#register------

#200

#"username": "wulaoshi", "code": "01"  #”code”:”01”,接口文档中说明,代表用户已存在

#<class ‘dict‘>

#‘username‘: ‘wulaoshi‘, ‘code‘: ‘01‘

 

更新一下username至”wulaoshi11”,后的运行结果是:

#register------

#200

#"code": "00", "userid": 773   #用户注册成功,当前用户在数据库中的id是773

#<class ‘dict‘>

#‘code‘: ‘00‘, ‘userid‘: 773

 

 

接口返回code说明:

‘00‘ : 成功

‘01‘:用户已存在

‘02‘:参数不合法

‘03‘:参数错误(1、用户信息错误 2、参数错误,数据库中不存在相应数据)

‘999‘:未知错误,看后台日志

 

postman工具,也可以执行。

 

5、登陆login

#encoding=utf-8

import requests

import json

import os

import hashlib

 

print ("register------")

data = json.dumps(‘username‘: ‘wulaoshi111‘, ‘password‘: ‘wulaoshi123456‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data= data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

 

m5 = hashlib.md5()  #创建对象

m5.update(‘wulaoshi123456‘.encode("utf-8"))  #将密码进行md5加密,添加对象时需要指定编码

pwd = m5.hexdigest()  #以十六进制格式显示加密信息(常用)

print (pwd)

 

print ("login------")

data = json.dumps(‘username‘: ‘wulaoshi111‘, ‘password‘: pwd) #密码是经过加密的密码

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

#运行结果:

#register------

#200

#"code": "00", "userid": 10

#<class ‘dict‘>

#‘code‘: ‘00‘, ‘userid‘: 10

#e5c7fda86b0b918c683ff87bf4813ebc    #经过md5加密的密码

#login------

#200

#"token": "6ed1c6292002b9dc927cfaad79783294", "code": "00", "userid": 10, "login_time": #"2019-06-11 20:03:26"                #获取到的token值,说明注册成功

#<class ‘dict‘>

#‘token‘: ‘6ed1c6292002b9dc927cfaad79783294‘, ‘code‘: ‘00‘, ‘userid‘: 10, ‘login_time‘: #‘2019-06-11 20:03:26‘

 

#token:在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。

 

以上两个例子的用户名必须要一样,且用户名必须使用一次,第二次的在注册时,会提示code:01,用户名已存在

"username": "liuyujing1", "code": "01"

 

6、减少用户名更改的次数(使用变量)

ps: 上面的例子,注册与登陆使用的用户名是一致的,且都是固定的字符串,如果用户名发生变化,需要同时更改注册和登陆两处的用户名。

import requests

import json

import os

import hashlib

 

username = "sunshine2"                 #将用户名存到username的变量中

 

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘sunshine123‘, ‘email‘: ‘[email protected]‘)            #请求时,不使用固定的字符串,字典支持输入变量

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

 

 

import requests

import json

import os

import hashlib

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

print (pwd)

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd) #登陆时,也使用变量

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

运行结果:

#register------                     #依然可以成功运行,且减少了更改用户名的地方

#200

#"code": "00", "userid": 12

#<class ‘dict‘>

#‘code‘: ‘00‘, ‘userid‘: 12

#e5c7fda86b0b918c683ff87bf4813ebc

#login------

#200

#"token": "863e15be7f53e11711b55dab0d2c4d7e", "code": "00", "userid": 12, "login_time": "2019-06-11 20:21:23"            #token登陆也是没有问题

#<class ‘dict‘>

#‘token‘: ‘863e15be7f53e11711b55dab0d2c4d7e‘, ‘code‘: ‘00‘, ‘userid‘: 12, ‘login_time‘: ‘2019-06-11 20:21:23‘

 

7、随机生成用户名,解决程序运行第二次时,提示用户名已存在

import requests

import json

import os

import hashlib

import random

 

username = "sunshine" + str(random.randint(1,99999))    #随机生成用户名

 

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘liuyujing123‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

print (pwd)

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd)

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.status_code)

print (r.text)

print (type(r.json()))

print (str(r.json()))

print (username)

 

8、使用assert断言

import requests

import json

import os

import hashlib

import random

 

username = "sunshine" + str(random.randint(1,99999))

 

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘sunshine123‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

print (r.text)

assert ‘"code": "00"‘ in r.text   #断言在r.text中存在"code": "00","code": "00"外需加’ ’

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd)

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.text)

assert ‘"token":‘ in r.text        #断言在r.text中存在"token":,"token":外需加’ ’

 

 

9、注册唯一的用户名

import requests

import json

import os

import hashlib

import random

 

with open("uniquenumber.txt","r+") as fp:  #使用gbk编码的方式打开文件,省略编码方式

    uniquenumber = int(fp.read().strip())    #去掉文件中的空格

    fp.seek(0,0)                           #游标回到开始的地方

    fp.write(str(uniquenumber+1))          #将以前读到的数字加1

 

username = "sunshine0612" + str(uniquenumber)  #生成唯一的注册用户名

print(username)

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘sunshine123‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

print (r.text)

assert ‘"code": "00"‘ in r.text

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd)

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.text)

assert ‘"token":‘ in r.text

运行结果:

#lsunshine06126

#register------

#"code": "00", "userid": 426

#login------

#"token": "d191a34781d6d6dc5d83f80bb6c54a7a", "code": "00", "userid": 426, #"login_time": "2019-06-12 22:09:33"

 

10、断言失败的情况下,继续执行

import requests

import json

import os

import hashlib

import random

 

with open("uniquenumber.txt","r+") as fp:

    uniquenumber = int(fp.read().strip())

    fp.seek(0,0)

    fp.write(str(uniquenumber+1))

 

username = "sunshine0612" + str(uniquenumber)

print(username)

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘sunshine123‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

print (r.text)

 

try:

    assert ‘"code": "01"‘ in r.text            #当存在"code": "01"时,正常运行

except AssertionError as e:                 #当不存在"code": "01"时,提示断言失败

    print("断言失败")

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd)

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

print (r.text)

assert ‘"token":‘ in r.text

#运行结果:

#sunshine06127

#register------

#"code": "00", "userid": 427

#断言失败

#login------

#"token": "644820468f35f2a31daf3177dda9046f", "code": "00", "userid": 427, "login_time": #"2019-06-12 22:27:00"

 

 

#sunshine06127

#register------

#"username": "sunshine06127", "code": "01"   #存在"code": "01",正常执行程序

#login------

#"token": "644820468f35f2a31daf3177dda9046f", "code": "00", "userid": 427, "login_time": #"2019-06-12 22:34:36"

 

11、生成简单测试报告

import requests

import json

import os

import hashlib

import random

 

testcase_count = 0

success_testcase_count = 0

fail_testcase_count = 0

 

with open("uniquenumber.txt","r+") as fp:

    uniquenumber = int(fp.read().strip())

    fp.seek(0,0)

    fp.write(str(uniquenumber+1))

 

username = "sunshine0612" + str(uniquenumber)

print(username)

print ("register------")

data = json.dumps(‘username‘: username, ‘password‘: ‘sunshine123‘, ‘email‘: ‘[email protected]‘)

r = requests.post(‘http://39.106.41.11:8080/register/‘, data = data)

testcase_count += 1

print (r.text)

 

try:

    assert ‘"code": "01"‘ in r.text

    success_testcase_count += 1

except AssertionError as e:

    print("断言失败")

    fail_testcase_count += 1

except Exception as e:

    print("未知错误")

    fail_testcase_count += 1

 

m5 = hashlib.md5()

m5.update(‘sunshine123‘.encode("utf-8"))

pwd = m5.hexdigest()

 

print ("login------")

data = json.dumps(‘username‘: username, ‘password‘: pwd)

r = requests.post(‘http://39.106.41.11:8080/login/‘, data = data)

testcase_count += 1

print (r.text)

try:

    assert ‘"token":‘ in r.text

    success_testcase_count += 1

except AssertionError as e:

    print("断言失败")

    fail_testcase_count += 1

except Exception as e:

    print("未知错误")

    fail_testcase_count += 1

 

print("测试报告-------")

print("一共执行了%s个测试用例"%testcase_count)

print("成功执行了%s个测试用例"%success_testcase_count)

print("成功执行了%s个测试用例"%fail_testcase_count)

运行结果:

#sunshine06129

#register------

#"code": "00", "userid": 437

#断言失败

#login------

#"token": "f9571721f7042edd2ed4dbbf94b6ab8b", "code": "00", "userid": 437, #"login_time": "2019-06-12 22:51:48"

#测试报告-------

#一共执行了2个测试用例

#成功执行了1个测试用例

#成功执行了1个测试用例

 

12、做封装

import requests

import json

import os

import hashlib

import random

 

testcase_count = 0

success_testcase_count = 0

fail_testcase_count = 0

 

def get_uniquenumber(data_file):   #做封装的公共函数可以提取出去,可以不放在测试

    with open(data_file,"r+") as fp:  #文件的主框架里面

        uniquenumber = int(fp.read().strip())

        fp.seek(0,0)

        fp.write(str(uniquenumber+1))

        return str(uniquenumber)

 

def md5(data):                 #做封装的公共函数可以提取出去,可以不放在测试

    m5 = hashlib.md5()         #文件的主框架里面

    m5.update(data.encode("utf-8"))

    pwd = m5.hexdigest()

    return pwd

 

def send_request(url,data):    #做封装的公共函数可以提取出去,可以不放在测试

    if isinstance(data,dict):    #文件的主框架里面

        data = json.dumps(data)

    r = requests.post(url,data = data)

    return(r)

 

def assert_result(r,key_word):

    global success_testcase_count  #设置全局变量

    global fail_testcase_count      #设置全局变量

    try:

        assert key_word in r

        success_testcase_count += 1

    except AssertionError as e:

        print("断言失败")

        fail_testcase_count += 1

    except Exception as e:

        print("未知错误")

        fail_testcase_count += 1

 

username = "sunshine0612" + get_uniquenumber("e:\\uniquenumber.txt")

print(username)

 

print ("register------")

url = ‘http://39.106.41.11:8080/register/‘

data = ‘username‘: username, ‘password‘: "sunshine123", ‘email‘: ‘[email protected]

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"code": 01‘))

 

print ("login------")

url = ‘http://39.106.41.11:8080/login/‘

data =‘username‘: username, ‘password‘: md5("sunshine123")

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"token"‘))

 

print("测试报告-------")

print("一共执行了%s个测试用例"%testcase_count)

print("成功执行了%s个测试用例"%success_testcase_count)

print("成功执行了%s个测试用例"%fail_testcase_count)

#运行结果:

#sunshine061224

#register------

#"code": "00", "userid": 2448

#断言失败

#None

#login------

#"token": "13db11b40f19345ffe652507d6f36f4d", "code": "00", "userid": 2448, #"login_time": "2019-06-16 14:35:32"

#None

#测试报告-------

#一共执行了2个测试用例

#成功执行了1个测试用例

#成功执行了1个测试用例

 

 

13、ip和端口可用变量来维护

import requests

import json

import os

import hashlib

import random

 

testcase_count = 0

success_testcase_count = 0

fail_testcase_count = 0

ip = "39.106.41.11"                  #ip和端口提取为变量

port = "8080"

 

def get_uniquenumber(data_file):

    with open(data_file,"r+") as fp:

        uniquenumber = int(fp.read().strip())

        fp.seek(0,0)

        fp.write(str(uniquenumber+1))

        return str(uniquenumber)

 

def md5(data):

    m5 = hashlib.md5()

    m5.update(data.encode("utf-8"))

    pwd = m5.hexdigest()

    return pwd

 

def send_request(url,data):

    if isinstance(data,dict):

        data = json.dumps(data)

    r = requests.post(url,data = data)

    return(r)

 

def assert_result(r,key_word):

    global success_testcase_count

    global fail_testcase_count

    try:

        assert key_word in r

        success_testcase_count += 1

    except AssertionError as e:

        print("断言失败")

        fail_testcase_count += 1

    except Exception as e:

        print("未知错误")

        fail_testcase_count += 1

 

username = "sunshine0612" + get_uniquenumber("e:\\uniquenumber.txt")

print(username)

 

print ("register------")

url = ‘http://%s:%s/register/‘%(ip,port)    #模板字符串

data = ‘username‘: username, ‘password‘: "sunshine123", ‘email‘: ‘[email protected]

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"code": 01‘))

 

print ("login------")

url = ‘http://%s:%s/login/‘%(ip,port)     #模板字符串

data =‘username‘: username, ‘password‘: md5("sunshine123")

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"token"‘))

 

print("测试报告-------")

print("一共执行了%s个测试用例"%testcase_count)

print("成功执行了%s个测试用例"%success_testcase_count)

print("成功执行了%s个测试用例"%fail_testcase_count)

 

14、配置和程序的分离

server_info.py:

ip = "39.106.41.11"

port = "8080"

 

e1_send.py:

import requests

import json

import os

import hashlib

import random

from server_info import ip,port    #引入ip和端口变量,使主程序不用更改配置

 

testcase_count = 0

success_testcase_count = 0

fail_testcase_count = 0

 

def get_uniquenumber(data_file):

    with open(data_file,"r+") as fp:

        uniquenumber = int(fp.read().strip())

        fp.seek(0,0)

        fp.write(str(uniquenumber+1))

        return str(uniquenumber)

 

def md5(data):

    m5 = hashlib.md5()

    m5.update(data.encode("utf-8"))

    pwd = m5.hexdigest()

    return pwd

 

def send_request(url,data):

    if isinstance(data,dict):

        data = json.dumps(data)

    r = requests.post(url,data = data)

    return(r)

 

def assert_result(r,key_word):

    global success_testcase_count

    global fail_testcase_count

    try:

        assert key_word in r

        success_testcase_count += 1

    except AssertionError as e:

        print("断言失败")

        fail_testcase_count += 1

    except Exception as e:

        print("未知错误")

        fail_testcase_count += 1

 

username = "sunshine0612" + get_uniquenumber("e:\\uniquenumber.txt")

print(username)

 

print ("register------")

url = ‘http://%s:%s/register/‘%(ip,port)

data = ‘username‘: username, ‘password‘: "sunshine123", ‘email‘: ‘[email protected]

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"code": 01‘))

 

print ("login------")

url = ‘http://%s:%s/login/‘%(ip,port)

data =‘username‘: username, ‘password‘: md5("sunshine123")

r = send_request(url,data)

testcase_count += 1

print(r.text)

print(assert_result(r.text,‘"token"‘))

 

print("测试报告-------")

print("一共执行了%s个测试用例"%testcase_count)

print("成功执行了%s个测试用例"%success_testcase_count)

print("成功执行了%s个测试用例"%fail_testcase_count

 

 

15、测试数据与程序的分离

1) test_data.txt

register||‘username‘: username, ‘password‘: "sunshine123", ‘email‘: ‘[email protected]

login||‘username‘: username, ‘password‘: md5("sunshine123")

#该文件中的username,在test_data文件中并不是字符串,需要变成变量

#处理方法:$username

register||‘username‘: $username, ‘password‘: "sunshine123", ‘email‘: ‘[email protected]

login||‘username‘: $username, ‘password‘: md5("sunshine123")

 

 

 

with open("test_data.txt") as fp:     #test_data.txt与e1_send.py,在同一目录下,所以不

     test_cases = fp.readlines()    #用绝对路径,且是gbk编码,所以不用写编码方式

 

print(test_cases)

运行结果:

[‘register||\‘username\‘: $username, \‘password\‘: "sunshine123", \‘email\‘: \‘[email protected]\‘\n‘, ‘login||\‘username\‘: $username, \‘password\‘: md5("sunshine123")‘]               #运行结果中有换行符

 

with open("test_data.txt") as fp:

     test_cases = fp.readlines()

test_cases = list(map(lambda x:x.strip(),test_cases))

print(test_cases)

#运行结果:

[‘register||\‘username\‘: $username, \‘password\‘: "sunshine123", \‘email\‘: \‘[email protected]\‘‘, ‘login||\‘username\‘: $username, \‘password\‘: md5("sunshine123")‘]               #去掉回车

#但是上面的结果中有\

#解决方法:

#将test_data.txt文件中的变量都以”$”的形式写

#更改后的test_data.txt文件

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"

login||"username": "$username", "password": "$md5(sunshine123)"

运行下面代码:

with open("test_data.txt") as fp:

     test_cases = fp.readlines()

test_cases = list(map(lambda x:x.strip(),test_cases))

print(test_cases)

结果:

[‘register||"username": "$username", "password": "sunshine123", "email": "[email protected]"‘, ‘login||"username": "$username", "password": "$md5(sunshine123)"‘]              #结果正确

 

 

尝试引入register具体的url

with open("test_data.txt") as fp:

     test_cases = fp.readlines()

 

test_cases = list(map(lambda x:x.strip(),test_cases))

 

print(test_cases[0])

url,data = test_cases[0].split("||")

print(url)

运行结果:

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"

register               #只是打印了register,但是并没有打印具体的url

 

test_data.txt:

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"

login||"username": "$username", "password": "$md5(sunshine123)"

 

 

server_info.py

ip = "39.106.41.11"

port = "8080"

register= ‘http://%s:%s/register/‘%(ip,port)

login = ‘http://%s:%s/login/‘%(ip,port)

 

 

e1_send.py:

import requests

import json

import os

import hashlib

import random

from server_info import *

 

with open("test_data.txt") as fp:

     test_cases = fp.readlines()

test_cases = list(map(lambda x:x.strip(),test_cases))

print(test_cases[0])

api_name,data = test_cases[0].split("||")

print(api_name)

exec("url="+api_name )          #接口名字和请求地址的映射

print(url)

运行结果:

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"           #但是运行结果中的username并没有成功引入

register

http://39.106.41.11:8080/register/    #引入register具体的url成功

 

 

引入username变量,进行请求,用到正则。

server_info.py:

ip = "39.106.41.11"

port = "8080"

register = ‘http://%s:%s/register/‘%(ip,port)

login = ‘http://%s:%s/login/‘%(ip,port)

 

test_data.txt

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"

login||"username": "$username", "password": "$md5(sunshine123)"

 

e1_send.py:

import requests

import json

import os

import hashlib

import random

from server_info import *

import re

 

with open("test_data.txt") as fp:

     test_cases = fp.readlines()

 

test_cases = list(map(lambda x:x.strip(),test_cases))

 

print(test_cases[0])

api_name,data = test_cases[0].split("||")

print(api_name)

exec("url="+api_name )

print(url)

 

testcase_count = 0

success_testcase_count = 0

fail_testcase_count = 0

 

def get_uniquenumber(data_file):

    with open(data_file,"r+") as fp:

        uniquenumber = int(fp.read().strip())

        fp.seek(0,0)

        fp.write(str(uniquenumber+1))

        return str(uniquenumber)

 

def md5(data):

    m5 = hashlib.md5()

    m5.update(data.encode("utf-8"))

    pwd = m5.hexdigest()

    return pwd

 

def send_request(url,data):

    if isinstance(data,dict):

        data = json.dumps(data)

    r = requests.post(url,data = data)

    return(r)

 

def assert_result(r,key_word):

    global success_testcase_count

    global fail_testcase_count

    try:

        assert key_word in r

        success_testcase_count += 1

    except AssertionError as e:

        print("断言失败")

        fail_testcase_count += 1

    except Exception as e:

        print("未知错误")

        fail_testcase_count += 1

 

 

username = "sunshine0612" + get_uniquenumber("e:\\uniquenumber.txt")

print(data)

if re.search(r"\$\\w+\",data):

    var_name = re.search(r"\$\(\w+)\",data).group(1)

    data = re.sub(r"\$\(\w+)\",eval(var_name),data)

print(data)

r = send_request(url,data)

print(r.text)

运行结果:

register||"username": "$username", "password": "sunshine123", "email": "[email protected]"

register

http://39.106.41.11:8080/register/

"username": "$username", "password": "sunshine123", "email": "[email protected]"

"username": "liuyujing061232", "password": "sunshine123", "email": "[email protected]"

"code": "00", "userid": 2456

 

16、eval和exec的区别

>>> exec("a=1")   #exec()执行程序

>>> a

1

>>> eval("a")      #eval(str),从一个表达式获取一个返回值

1

 

17、接口测试框架思想:

配置和程序分离

公共函数和主程序分离

测试数据和程序的分离

有测试报告

有日志

以上是关于python入门(二十一):基于文件的接口自动化框架的主要内容,如果未能解决你的问题,请参考以下文章

MFC编程入门之二十一(常用控件:编辑框Edit Control)

23任务二十一——

SpringBoot入门二十一,全局异常处理

Python爬虫从入门到放弃(二十一)之 Scrapy分布式部署

Python爬虫从入门到放弃(二十一)之 Scrapy分布式部署

Python从入门到精通(二十一)Python并发编程互斥锁的运用以及线程通信