Python(四)运用postman实现接口自动化

前言

本章主要讲述接口自动化实现,因为在测试过程中我们经常需要手动去造一些假数据,首先我们可以用python取代手动造数据,然后运用postman实现接口的自动化



一、操作思路

我的操作步骤一般是这样的:

1、首先会把要调用的接口,先手动造一条假数据在postman中调用,查看是否调用成功.

2、调用成功后,查看接口哪些请求参数需要进行更改,那就将这部分参数用python造出来,写入到txt或csv中

3、然后打开python的Runner模式,自动读取数据文件中的数据,自动请求


二、实战

2.1)首先在postman中把参数格式给写好,然后需要进行参数化的用 { {XX}} 代替

一般关于接口的请求参数格式,如果有限制的需要根据接口文档进行定义,因为在写程序时,参数格式就严格按照这个标准写

例如,我以下需要造参数的接口的数据格式如下:

  • id :这个任意就行,但不能重复
  • RYXXBZ:人员信息标识 后端限定必须为【40位大小写字母+数字组合】
  • XM:姓名
  • XBDM: 【1代表男 2代表女】
  • ZJHM:身份证号码

在这里插入图片描述


2.2)用python造数据自动写入到txt文件中
  • 关于造数据:faker库也是有限的,我在2.1中有说过有些参数,接口文档是有定义格式的,fake可能没有提供方法给你生成相应格式的数据,那你就得自己想办法生成相应的数据

代码如下:

from faker import Faker
import pymysql
import random
import time
import string

# 造人员数据
class Create_Data(object):
    def __init__(self):
        # 选择中文
        fake = Faker("zh_CN")

        r_num = 40  # 指定随机数长度
        
        # 1、id :这个任意就行,但不能重复  random.randint(10000000, 99999999) -->这个我自动生成8位的随机数
        # 2、RYXXBZ:人员信息标识 后端限定必须为【40位大小写字母+数字组合】
        #       r_num = 40  # 指定随机数长度
        #       string.ascii_letters:生成大小写字母(type:字符串)
        #       string.digits:生成数字(type:字符串)
        #   RYXXBZ = ''.join(random.sample(string.digits + string.ascii_letters, r_num)) -->采用相关方法组成40位规则
        # 3、XM:姓名 fake.name() -->fake的方法
        # 4、XBDM: 【1代表男 2代表女】 random.randint(1, 2) -->随机获取1,2
        # 5、ZJHM:身份证号码  fake.ssn() -->fake的方法

        # 生成数据改变循环体来控制数据量rang(?)
        self.data_total = [
            [random.randint(10000000, 99999999), ''.join(random.sample(string.digits + string.ascii_letters, r_num)),
             fake.name(), random.randint(1, 2), fake.ssn()]
            for x in range(100)]
        print(self.data_total)

    # 写入到txt
    def deal_txt(self):
    	#这里写你要保存到的路径
        with open("D:\\develop\\apache-jmeter-3.1\\bin\\peopleTest.txt", "w", errors="ignore", encoding="utf-8") as output:
        #注意这里写入到txt文件的字段需要与postman中匹配的字段名称及顺序保持一致
            output.write(
                "id,RYXXBZ,XM,XBDM,ZJHM\n")
            for row in self.data_total:
                rowtxt = "{},{},{},{},{}".format(
                    row[0], row[1], row[2], row[3], row[4])
                output.write(rowtxt)
                output.write("\n")
            output.close()
            print("Processing completed to txt")


if __name__ == '__main__':
    data = Create_Data()
    data.deal_txt()

查看生成的txt文件
在这里插入图片描述

2.3)运用postman自动读取文件

2.3.1)postman测试校验规则

在这里插入图片描述

2.3.2)点击Runner,并填写信息

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.3)点击执行

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Makasa/article/details/112321078