自动化应该如何实现

2021/4/26 18:55:29

本文主要是介绍自动化应该如何实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

接口业务用例的思考

有个问题思考很久,业务流程的自动化应该如何实现?是不是应该做十几个接口的业务测试?

咨询好些大佬,

A:看成果,有效果有时间都可以做。

B:业务流程的接口测试交给系统测试来做是不是会更好?

后者的话似乎有点让我自省~,我又反问他,那你这样说,接口的依赖你如何处理?

B:Mock解除依赖!

至此后,很久才明白。调用三方接口,Mock是个不错的选择

而所谓的业务用例,投入与回报成正比

一条用例的自动化应该做什么!

 看起来简单的问题,实际上做起来没那么容易

举个例子:

账号、密码注册,测试注册成功

1、检查数据库是否存在该账号,有sql删除,没有跳过

2、传入参数调用注册接口,断言响应

3、sql删除该账号

 

如何优雅

花了很多时间探索后才发现pageobject

元素层 + page层+ case层的相互调用似乎是已是标准

如何使用python  优雅的实现考验那个曾经为之努力的ceshiren   ->   代码始于颜值终于才华

步骤:

①一起从case开始吧!

这是一条获取会员列表接口测试的正向用例,参数分别是:页码、页数、排序方式、是否正序
调用如此简单,1、调用会员page下的会员列表接口,2、传入所需参数 3、获取响应 4、响应断言
关键就在于调用的api如何实现
    @pytest.mark.parametrize("case", ViplistData.case)
    @assert_logger
    def test_viplist(self, case):
        """B端会员列表"""
        r = self.vip.viplist(pageindex=case['index'], pagesize=case['size'],
                             orderfield="createtime", ordertype=0)
        assert r.success is Truez


②page层

 什么是page?页面,页面下的功能点、方法,都归属这个页面

这样一来其实就对接口分了一下类,就比如会员下,有获取列表、新增会员、删除会员等

其实实现,无非就是传入数据给发送请求的方法而已

用了1个装饰器来重复造轮子,没错这很pythonic !

 

class Vip(WeShop_B):
    def __init__(self):
        self.apipath = YAML_DIR + r"\vip.yaml"
        self.apiyaml = self.api_yaml(file=self.apipath)

    @api
    def viplist(self, pageindex, pagesize,
                orderfield, ordertype) -> res:
        """
        获取pc会员列表
        :param pageindex: 当前页数 1
        :param pagesize: 一页数量  10
        :param orderfield: 排序字段  createtime
        :param ordertype: 排序(0-正序,1-倒序)
        :return:
        """
        pass


def api(func):
    @functools.wraps(func)
    def magic(self, *args, **kwargs):
        func(self, *args, **kwargs)
        base_api: Base = self
        method = func.__name__
        base_api.params.update({name: vaule for name, vaule in zip(func.__code__.co_varnames[1:0], args)
                                if args is not None})
        base_api.params.update(kwargs)
        req = base_api.api_yaml(file=base_api.apipath)[method]
        res = base_api.api_send(req)

写在最后:

元素层 1个yaml\json就要写 1个page。好像还是不够pythonic

正在朝着扫描yaml进行测试的路前进~



这篇关于自动化应该如何实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程