自动化测试用例要怎么写

自动化测试用例要怎么写

  自动化测试, 不是测试功能,可不可用。 而是一个流程上有没有问题,能不能通过。
  上一片说了, 接口的测试用例, 不用像功能测试用例那样, 一个功能写N多个测试点, 因为用自动化测试一个功能的所有情况, 相当费时间.
  接口的测试用例, 其实就写一个功能的主要功能, 或者是影响流程的多个功能,

  说的在详细点, 就是 比如审核功能, 通过, 和退回两个功能, 退回需要填写审核意见 。
  那我们的用例就 只要 有两个, 1 是通过,2 是退回加审核意见。(不用写退回然后不写审核意见能不能过,想写的话也随意,就是费点时间。)
点关注的图片
  !!!

测试用例

这是我用的测试用例, 期中每一步操作, 都给出测试数据,用来在系统上添加一个商品,然后一大堆操作,因为不是讲测试点,就是给出一个用例来意思意思,我就不多说,想表达的意思打达到了就好了。
在这里插入图片描述

读取测试用例的脚本

  这个是关键,上面那个很明显是用 excel 写的要怎么给程序使用呢下面就要写一下了。
我是用 python 脚本写的, 如果看不懂 python 的语言,可以自学, 也可以私信我。

# -*- coding:utf-8 -*-
import json
import os
import re
import threading
from datetime import datetime
from json import JSONDecodeError

import openpyxl
import xlrd
from openpyxl.styles import NamedStyle, PatternFill
from xlrd import xldate_as_tuple
# 这下面的,是我自己写的几个工具方法,可以给出来,但是需要其他组件
# xls_dict 是一个 dict 可以用来修改文件中的一些数据
#  my_pow  封装了 pow()函数
from config.XLS_DICT import xls_dict, my_pow   

# logger 日志输出组件,可以替换成 print()
from utils.Logger_util import logger

# execute_sel_sql_return_one 查询数据库的,如果没有可以 写一个空的
from utils.Mysql_util import execute_sel_sql_return_one
 
# file_isexists输出文件的时候, 判断文件是否已经存在
from utils.basics_util import file_isexists

# object_dir 一个 str 保存的是路径
from variable.basics_var_class import object_dir

xls_dict 是一个 dict 可以用来修改文件中的一些数据

要隆重介绍一下这个变量, 别小看他,他可是决定了文件数据转化
比如说,审核接口, 通过,接口传给后台的是1 ,退回是2,但是用例里面, 你能写1,或者2 吗?要写通过,退回。
代码这样写

xls_dict = { 
	“审核结果”:{
		"通过":1,
		"退回":2,
		"":1 # 最后这个是默认值,可以不写
	}
}

用例这样写
在这里插入图片描述
运行后的结果:

res = [{"审核结果":1,"oid_审核结果":"通过"},{"审核结果":2,"oid_审核结果":"退回"}]

源码:下载文件:Read_File_Util.py
(傻笑,要两金币才可以下载!)

在这里插入图片描述
可以看到, 第一行变成了每一个list里边的 key,value 保存的是通过xls_dict 保存的值。还多了一个 oid开头的,保存着文件原本的数据。(注意,key不要写错了,哪怕多了一个空格都算是错的。)

# 这个文件中 最主要的的一个函数,
	@classmethod
    def read_file(cls, file_name,mode_key):
        cls.set_mode_key(mode_key)
        read_work_book = xlrd.open_workbook(file_name)
        sheet_names = read_work_book.sheet_names()
        cls.read_files(file_name,["全局变量"],mode_key)
        cls.read_files(file_name,sheet_names,mode_key)
        cls.get_ref_data(mode_key)
        return cls.get_data(mode_key)
	@classmethod
    def __read_file(self, file_name, sheet_name):

        """

        :param file_name: xlsx 文件名称 (绝对路径)
        :param sheet_name:
        :return:
        """
        read_work_book = xlrd.open_workbook(file_name)
        read_sheet = read_work_book.sheet_by_name(sheet_name)
        row_num = read_sheet.nrows
        col_num = read_sheet.ncols
        cell_values = read_sheet._cell_values
        cell_values_list = []
        for rd in range(1, len(cell_values)):
            keys = cell_values[0]
            values_dict = {}
            for vl in range(len(keys)):
                # 判断 数据中, 是否有需要引用的数据
                # 无法进行处理, 先进行记录
                if "ref{" in str(cell_values[rd][vl]):
                    self.set_ref_data_log(sheet_name,rd-1,keys[vl])
                # 引用数据记录
                if "{{" in str(cell_values[rd][vl]) and "}}" in str(cell_values[rd][vl]):
                    var_data = {"mode": sheet_name, "rd": rd-1, "vl": keys[vl]}
                    cell_values[rd][vl] = self.get_var_data(self.get_mode_key(),var_data,cell_values[rd][vl])
                # xls_dict 变量数据转换
                if keys[vl] in xls_dict.keys(): # 就是为什么说 错了一个空格都对不上的原因
                    values_dict[self.__switch_code + keys[vl]] = cell_values[rd][vl]
                    values_dict[keys[vl]] = self.data_switch(cell_values[rd][vl], keys[vl])
                else:
                    values_dict[keys[vl]] = cell_values[rd][vl]
            if values_dict != {}:
                cell_values_list.append(values_dict)

        return cell_values_list

上面代码中, 可以看到 有很多 if 在

if “ref{” in str(cell_values[rd][vl]):

ref{}是用来引用本文件中,其他sheet 的中的数据:被应用的sheet 要有一列 第一行是 sheet 的页面

	"""
            ref{sheet}   			此 sheet 的全部数据
            ref{sheet#1} 			此 sheet 的序号 = 1 的
            ref{sheet#1,2,3,4}		此 sheet 的序号 = 1,2,3,4 的
            ref{sheet#1_4}			此 sheet 的序号 = 1到4 的
            ref{sheet#1_4,6}		此 sheet 的序号 = 1到4 和 6 的
            ref{sheet#1_4,6_7}		此 sheet 的序号 = 1到4 和 6到7 的
            ref{sheet1#1;sheet2#1}	读取多个 sheet 的序号 = 1 的 #号后面其他雷同
        """

被引用的 sheet 页中的内容
在这里插入图片描述

if “{{” in str(cell_values[rd][vl]) and “}}” in str(cell_values[rd][vl]):

{{key_name}} 用来引用 sheet “全局变量” 中的数据, 要申明一下, 被读取的文件中要有一个 sheet_name = 全局变量的sheet页 。

在这里插入图片描述
好啦 就写这些了, 下载了,不会用的,可以私信我, 我会100%给你们解答! !!
点关注的图片
  !!!

  • 12
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值