腾讯出品小程序自动化测试框架【Minium】系列(七)测试框架的设计和开发-精选

2023-04-08 11:43:48 来源:博客园 分享到:
前言

整个框架的开发及调通是在3月27日晚上22点完成,如下:

这篇文章真的是拖了太久了,久到我居然把代码部分完成后,彻底给忘了,这记性,真的是年纪大了!

框架的设计开发1、框架搭建设计要素日志&测试步骤报告&失败截图配置文件&数据源设计公共函数&API封装测试数据&参数化、解耦测试套件&测试用例设计、组装2、工程结构3、日志

日志可以很好辅助我们定位问题,示例代码如下:


【资料图】

class LogUtils:    def __init__(self, log_path=log_path):        """        通过python自带的logging模块进行封装        """        self.logfile_path = log_path        # 创建日志对象logger        self.logger = logging.getLogger(__name__)        # 设置日志级别        self.logger.setLevel(level=logging.INFO)        # 设置日志的格式        formatter = logging.Formatter("%(asctime)s - %(filename)s [line:%(lineno)d] - %(levelname)s: %(message)s")        """在log文件中输出日志"""        # 日志文件名称显示一天的日志        self.log_name_path = os.path.join(self.logfile_path, "log_%s" % time.strftime("%Y_%m_%d")+".log")        # 创建文件处理程序并实现追加        self.file_log = logging.FileHandler(self.log_name_path, "a", encoding="utf-8")        # 设置日志文件里的格式        self.file_log.setFormatter(formatter)        # 设置日志文件里的级别        self.file_log.setLevel(logging.INFO)        # 把日志信息输出到文件中        self.logger.addHandler(self.file_log)        # 关闭文件        self.file_log.close()        """在控制台输出日志"""        # 日志在控制台        self.console = logging.StreamHandler()        # 设置日志级别        self.console.setLevel(logging.INFO)        # 设置日志格式        self.console.setFormatter(formatter)        # 把日志信息输出到控制台        self.logger.addHandler(self.console)        # 关闭控制台日志        self.console.close()    def get_log(self):        return self.logger
4、数据源

这里我用的是Excel,示例如下:

示例代码如下:

class ExcelUtils(object):    @staticmethod    def get_element_Data():        """        通过pandas读取excel中的数据,返回字典映射        """        data_list = pd.read_excel(excel_path).values.tolist()  # reading file        dict_elements = {}        for data in data_list:            dict_elements[data[0]] = data[1] + "," + data[2]        return dict_elements

可能评论区会有人说用yml、json、csv做数据源会更好,我不认同!

为什么用Excel做数据源?

所有的测试框架和测试工具,都应该以使用者角度考虑问题,以易用性和上手难度为先。所有做测试工具及平台、测试框架,都是为他人服务,所以越简单,越好操作,更好,后期可以再优化、上面做数据源,可能自我感觉技术上显得高大上,很牛逼,但是抱歉,使用者,根本不知道yml、json是啥你怎么办,可以学,没错(互联网时代时间成本太昂贵了),不是不可能遇到,是因为最不可控的是使用者人群,不是吗?

框架的一开始设计很重要,所以整体的设计要清晰明了。

感动自己的实现不重要,而是被团队需要的实现,才会显得自己重要!

5、基础层

这里主要用于处理,元素对象和原生API的封装,部分代码示例如下图:

6、测试用例

action层写测试用例,示例代码如下:

class PageAction(BasePage):    def order(self, taste: str):        """        根据口味选餐        :param taste:        :return:        """        # 将第一个五花肉石锅拌饭加入购物车        self.element_click("将第一个五花肉石锅拌饭加入购物车")        # 选择口味        self.element_click(taste)        # 确定选择        self.element_click("确定选择")        # 共选择份数        total = self.get_elementText("共选择份数")        return total

调用action层,执行测试用例,示例代码如下:

# -*- coding: utf-8 -*-"""# @Time    : 2023/03/20 20:55# @Author  : longrong.lang# @FileName: order_test.py# @Software: PyCharm# @Blog    :https://www.cnblogs.com/longronglang/# @Motto:ABC(Always Be Coding)"""import miniumfrom action.page_action import PageAction@minium.ddt_classclass OrderTest(minium.MiniTest):    """    测试登录功能    """    pageAction = None    @minium.ddt_case(        {"taste": "蒜香味", "count": " 1 "},        {"taste": "姜葱味", "count": " 1 "},        {"taste": "盐焗味", "count": "3"}    )    def test_Order(self, value):        try:            self.pageAction = PageAction(self.mini, self.page)            total = self.pageAction.order(value["taste"])            self.assertEqual(total, value["count"])        except AssertionError as err:            self.pageAction.screen_shot()            self.fail(err)
7、测试报告

觉得minium的测试报告颜值还可以,还可以看到历史的,感觉还不错,如下:

失败有截图还有日志:

B站看运行效果:https://www.bilibili.com/video/BV1Dk4y147Sn

写在最后

到此,关于minium系列暂时告一段路了,感谢大家对我的支持,觉得我的文章对您有帮助,请帮忙转发!

我是六哥,后面还会陆续更新其他教程文章,还请继续关注我!

标签:

腾讯出品小程序自动化测试框架【Minium】系列(七)测试框架的设计和开发-精选

来源:博客园 2023-04-08 11:43:48

静宜女大生找到了!人在缅北诈骗园区,“男友不走我也不走”

来源:星岛环球网 2023-04-08 10:21:51

地产股突然爆发!李蓓再度公开唱多 10年一遇级别?北上资金却在减持 热门看点

来源:券商中国 2023-04-08 08:41:00

“第三支箭”后A股首单房企重组将迎来股东表决 陆家嘴董事长徐而进:中小股东反馈积极

来源:同花顺财经 2023-04-08 06:46:16

刑法对招摇撞骗罪的处罚幅度有哪些?-天天新动态

来源:法师兄 2023-04-08 04:05:24

家庭经济状况核查授权书怎么填写_家庭经济状况及主要来源怎么填

来源:互联网 2023-04-07 23:09:35

微速讯:山河药辅:一季度净利预增40.11%-51.93%

来源:证券时报·e公司 2023-04-07 21:00:30

创始人集体隐退,森马美邦走不动了 天天快报

来源:时代财经APP 2023-04-07 20:06:38

国产新型直升机AC332首飞成功!中国再添一款应急救援利器!

来源:央视新闻 环球时报 2023-04-07 18:57:49

手机日式rpg恋爱养成游戏推荐 文字恋爱养成|热门

来源:第一手游网 2023-04-07 17:50:10

全球热文:天火上副本攻略_天火上

来源:互联网 2023-04-07 16:48:46

杂技剧,独属泉城的文艺新IP?_当前快看

来源:大众日报 2023-04-07 16:04:28

今日精选:保卫萝卜4绿野奇缘第39关攻略

来源:游戏资讯网 2023-04-07 14:57:05

IDC:继续下调2023年全球IT支出预测-天天微头条

来源:金融界 2023-04-07 13:51:55

德国陆军宣布,追加一批PZH-2000自行榴弹炮订单 焦点速看

来源:锅盖后面藏尤里 2023-04-07 12:36:16

安全气囊属于个体防护吗 安全气囊属于几类危险品?|每日视点

来源:城市头条网 2023-04-07 11:51:51

世界消息!广州港打造全自动化集装箱码头“广州方案”

来源:广州日报 2023-04-07 10:47:12

今年扬州水稻种植面积超290万亩

来源:扬州日报 2023-04-07 10:16:42

天天微头条丨德信中国:向中意宁波生态园出售余姚地块,预计亏损约6940万元

来源:澎湃新闻 2023-04-07 09:09:14

日本奥运会开幕式(中国退出2021日本奥运会)

来源:互联网 2023-04-07 08:27:53

跳楼机突发故障多名游客被困空中近20分钟,家长:有的孩子都吓哭了-独家

来源:极目新闻 2023-04-07 06:51:12

浙江沪杭甬(00576):浙商证券拟作为数智交院上市申请的主承销商 世界微头条

来源:智通财经 2023-04-07 04:55:50

公考巡考团:在全国寻找“上岸”机会

来源:南方周末 2023-04-07 00:09:33

4月7日上市公司重要公告集锦:白云机场2022年亏损10.71亿元 环球播资讯

来源:证券日报网 2023-04-06 21:40:27

让辣椒不那么辣的方法_给女生送什么手工礼物好看又简单

来源:趣礼物 2023-04-06 20:23:37

孙国友承包万亩沙地20年栽种600多亩 将带来什么影响??

来源:互联网 2023-04-06 19:15:27

AI绘图二次元!iGame RTX 4090竟如此之快|天天热点评

来源:中关村在线 2023-04-06 18:05:35

2023卡塔尔亚洲杯分档完整一览 中国落入第二档

来源:球天下 2023-04-06 17:07:18

快消息!个人检讨书范文违规违纪_个人检讨书范文

来源:科学教育网 2023-04-06 16:15:12

招商证券回应降薪:遵循业绩目标对标市场、薪酬水平对标市场的双对标原则-速递

来源:和讯崔晨 2023-04-06 15:32:54

Copyright   2015-2022 现在知识产权网 版权所有  备案号:粤ICP备18023326号-5   联系邮箱:855 729 8@qq.com