自动化测试框架seldom

这篇具有很好参考价值的文章主要介绍了自动化测试框架seldom。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

seldom 介绍

seldom 是基于 unittest 的全功能自动化测试框架;针对自动化测试达到开箱即用。

seldom特点

  • 支持测试类型(web/app/api)
  • 丰富的断言
  • 生成随机测试数据
  • 用例依赖
  • 用例分类标签
  • 支持发送(邮件、钉钉、飞书、企微)消息等
  • 日志打印
  • 缓存cache
  • 命令行工具
  • 强大的数据驱动(JSON/YAML/CSV/EXCEL)
  • HTML/XML报告
  • 失败重跑&截图
  • 数据库操作(MySQL/sqlite3/Mongodb)
  • 支持平台化

 官方文档:介绍 | seldom文档

seldom和pytest对比

seldom作者把seldom比作电脑,而把pytest比作CPU。

自动化测试框架seldom

安装

pip install seldom

脚手架创建项目 

> seldom -P mypro

 创建测试用例

# test_sample.py
import seldom



class SampleTest(seldom.TestCase):

    def test_case(self):
        """a simple test case """
        self.open("http://www.itest.info")
        self.assertInUrl("itest.info")



if __name__ == '__main__':
    seldom.main()
基本规范:

创建测试类YouTest并继承seldom.TestCase类。
创建测试方法test_case, 必须以test开头。

seldom不需要初始化webdriver,也不需要定义浏览器。 只需要open方法访问url。

查看open方法的源码可以看到是seldom里定义了driver,调用了Chrome浏览器。

(这里我觉得不应该封装这么深,应该用户定义driver,再用driver去调用方法)

自动化测试框架seldom

运行方式

  • main() 方法:在.py 文件中使用seldom.main() 方法。用python命令行执行。 python+测试文件
  • seldom 命令:通过sedom 命令指定要运行的目录&文件&类&方法。
> cd mypro/  # 进入项目根目录
> seldom -p test_dir  # 运行目录
> seldom -p test_dir/test_sample.py  # 运行文件
> seldom -m test_dir.test_sample       # 运行文件
> seldom -m test_dir.test_sample.SampleTest # 运行 SampleTest 测试类
> seldom -m test_dir.test_sample.SampleTest.test_case # 运行 test_case 测试方法

main参数

 confrun.py 配置文件

confrun.py 用于配置运行环境。 配置函数与 seldom.main() 的参数一致。

 失败重跑

设置rerun=3,在命令行运行python可以看到执行了3次,直接使用unittest执行看不出来执行了3次。

seldom.main(rerun=3)

 自动化测试框架seldom

 多线程运行

import seldom
from seldom.utils import threads

#这里有问题,没有打开edge浏览器
class MyTest(seldom.TestCase):

    def test_baidu(self):
        self.open("https://www.baidu.com")
        print("使用chrome运行")
        self.sleep(3)

    def test_bing(self):
        self.open("https://www.bing.com")
        print("使用edge运行")
        self.sleep(4)


@threads(2)  # !!!核心!!!! 设置线程数
def run_case(case: str, browser: str):
    """
    根据传入的case执行用例
    """
    seldom.main(case=case, browser=browser, debug=True)


if __name__ == "__main__":
    # 将两条用例拆分,分别用不同的浏览器执行
    cases = {
        "test_thread_case.MyTest.test_baidu": "chrome",
        "test_thread_case.MyTest.test_bing": "edge"
    }

    for key, value in cases.items():
        run_case(key, value)

start/end

类似setup,teardown

start()/end()  

start_class()/end_class()

class TestCase(seldom.TestCase):

    def start(self):
        print("一条测试用例开始")

    def end(self):
        print("一条测试结果")

    def test_search_seldom(self):
        self.open("https://www.baidu.com")
        self.type_enter(id_="kw", text="seldom")

    def test_search_poium(self):
        self.open("https://www.baidu.com")
        self.type_enter(id_="kw", text="poium")

 跳过测试

可以跳过测试方法或者测试类

装饰器

  • skip: 无条件地跳过一个测试。
  • skip_if: 如果条件为真,则跳过测试。
  • skip_unless: 跳过一个测试,除非条件为真。
  • expected_failure: 预期测试用例会失败。
class TestCase(seldom.TestCase):

    def start(self):
        print("一条测试用例开始")

    def end(self):
        print("一条测试结果")

    def test_search_seldom(self):
        assert 1==1
    @seldom.skip()
    def test_search_poium(self):
        assert 1==2
if __name__ == '__main__':
    seldom.main(debug=True)

自动化测试框架seldom

一条通过,一条忽略。

重复执行

 @rerun(100)
    def test_search_seldom(self):
        self.open("https://www.baidu.com")
        self.type_enter(id_="kw", text="seldom")

 随机测试数据

class YouTest(seldom.TestCase):

    def test_case(self):
        """a simple test case """
        word = testdata.get_word()
        print(word)

没有使用faker库,而是seldom自己处理的方法实现的。 

用例依赖

这个比较方法,对于有依赖的用例可以不用手动定义顺序了。

import seldom
from seldom import depend


class TestDepend(seldom.TestCase):
    @depend("test_002")
    def test_003(self):
        print("test_003")
    @depend("test_001")
    def test_002(self):
        print("test_002")

    def test_001(self):
        print("test_001")



if __name__ == '__main__':
    seldom.main(debug=True)

自动化测试框架seldom

 用例分类

设置为黑名单的标签不执行,白名单的标签执行。

from seldom import label


class MyTest(seldom.TestCase):

    @label("base")
    def test_label_base(self):
        self.assertEqual(1+1, 2)

    @label("slow")
    def test_label_slow(self):
        self.assertEqual(1, 2)

    def test_no_label(self):
        self.assertEqual(2+3, 5)


if __name__ == '__main__':
    # seldom.main(debug=True, whitelist=["base"])  # whitelist
    seldom.main(debug=True, blacklist=["slow"])    # blacklist

seldom API

Seldom API | seldom文档 (seldomqa.github.io)

Page Object

> pip install poium
import seldom
from poium import Page, Element


class BaiduPage(Page):
    """baidu page"""
    search_input = Element(id_="kw")
    search_button = Element(id_="su")


class BaiduTest(seldom.TestCase):
    """Baidu search test case"""

    def test_case(self):
        """
        A simple test
        """
        page = BaiduPage(self.driver, print_log=True)
        page.open("https://www.baidu.com")
        page.search_input.send_keys("seldom")
        page.search_button.click()
        self.assertTitle("seldom_百度搜索")


if __name__ == '__main__':
    seldom.main(browser="chrome")

发送钉钉

import seldom
from seldom import DingTalk

# ...

if __name__ == '__main__':
    seldom.main()
    ding = DingTalk(
        access_token="690900b5ce6d5d10bb1218b8e64a4e2b55f96a6d116aaf50",
        key="xxxx",
        app_secret="xxxxx",
        at_mobiles=[13700000000, 13800000000],
        is_at_all=False,
    )
    ding.sender()

 日志

from seldom.logging import log

log.trace("this is trace info.")
log.info("this is info.")
log.error("this error info.")
log.debug("this debug info.")
log.success("this success info.")
log.warning("this warning info.")

缓存

登录token,很多条用例都会用到登录token,那么就可以借助缓存来暂存登录token,从而减少重复动作

cache 本质上是通过json文件来临时记录数据,没有失效时间。你需要在适当的位置做清除操作。例如,整个用例开始时清除。

数据驱动

  • 支持使用csv、json、yaml文件进行数据驱动
  • 支持使用装饰器class_data()、@data()
  • 支持使用接口数据@api_data()
  • 支持使用DDT

数据驱动 | seldom文档

web项目

GitHub - SeldomQA/seldom-web-testing

seldom 提供了一组针对Web页面的断言方法。 

poiumopen in new window 是Page objects设计模式最佳实践。

API项目

基于seldom的接口自动化项目:

GitHub - SeldomQA/seldom-api-testing: api automation test project based on seldom framework

seldom真正的优势在断言、日志和报告 

  • 支持assertJSON()
  • 支持assertPath()
  • 支持assertSchema

seldom集成了GenSONopen in new window ,可以帮你自动生成Json schema

数据库操作

seldom 支持sqlite3、MySQL、SQL Server、MongoDB数据库操作

测试报告

使用python运行文件,会生成测试报告。如果不想每次运行都生成HTML报告,可以打开debug模式。

seldom.main(debug=True)

seldom 默认生成HTML测试报告,在运行测试文件下自动创建reports目录。

定义测试报告

seldom.main(report="./report.html",
            title="百度测试用例",
            tester="tester",
            description="测试环境:windows 10/ chrome")

自动化测试框架seldom

测试平台

GitHub - SeldomQA/seldom-platform: Based on the seldom test platform文章来源地址https://www.toymoban.com/news/detail-480578.html

到了这里,关于自动化测试框架seldom的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UI自动化概念 + Web自动化测试框架介绍

    UI,即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试,UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 从不同的阶段或层次来说,自动化测试可以分为单元测试、接口

    2024年02月08日
    浏览(70)
  • Ui自动化概念+Web自动化测试框架介绍

    目录 UI 1.UI自动化测试概念:我们先明确什么是UI 2.为什么对UI采用自动化测试? 3.什么项目适合做UI自动化测试? 4.UI自动化测试介入时机 5.UI自动化测试所属分类 Web自动化测试框架介绍 2.Selenium框架介绍及特点: Web自动化测试环境搭建 2.元素定位(一) idclassname,tagname定位 link text与

    2023年04月21日
    浏览(54)
  • Python自动化测试框架:unittest介绍

    Unittest是Python中最常用的测试框架之一,它提供了丰富和强大的测试工具和方法,可以帮助开发者更好地保证代码质量和稳定性,本文就来介绍下Unittest单元测试框架。 unittest是Python的单元测试框架,它提供了一套丰富的测试工具和方法,包括测试用例、测试套件、断言、测试

    2024年02月05日
    浏览(56)
  • 【web自动化测试】入门篇 01—— 框架介绍

    web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”,通常都会作为广大测试从业者的首选学习对象,相较于C/S架构的自动化来说,B/S有着其无法忽视的诸多优势,从行业发展趋、研发模式特点、测试工具支持,其整体的完整生态已经远远超过了C/S架构方面的

    2024年02月09日
    浏览(44)
  • Selenium基础 — Selenium自动化测试框架介绍

    Selenium是一个用于Web应用程序测试的工具。 只要在测试用例中把预期的用户行为与结果都描述出来,我们就得到了一个可以自动化运行的功能测试套件。 Selenium测试套件直接运行在浏览器中,就像真正的用户在操作浏览器一样。 Selenium也是一款同样使用Apache License 2.0协议发布

    2024年02月02日
    浏览(53)
  • Selenium浏览器自动化测试框架详解_selenium 测试框架介绍

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新软件测试全套学习资料》

    2024年04月25日
    浏览(56)
  • Selenium浏览器自动化测试框架简单介绍

    目录 selenium简介 介绍 功能 优势 基本使用 获取单节点 获取多节点 节点交互 动作链 执行JavaScript代码 获取节点信息 切换frame 延时等待 前进和后退 cookies 选项卡管理 异常处理 选项卡切换 无头浏览器 介绍 Selenium [1]  是一个用于Web应用程序测试的工具。Selenium测试直接运行在

    2024年02月13日
    浏览(40)
  • 【自动化测试】基于Selenium + Python的web自动化框架

    Selenium是一个基于浏览器的自动化工具,她提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid:  1、Selenium IDE:Firefox的一个扩展,它可以进行录制回放,并可以把录制的操作以多种语言(例如java,p

    2024年02月07日
    浏览(78)
  • 自动化测试框架pytest系列之21个命令行参数介绍(二)

    第一篇 :  自动化测试框架pytest系列之基础概念介绍(一)-CSDN博客 接上文 3.pytest功能介绍 3.1 第一条测试用例 首先 ,你需要编写一个登录函数,主要是作为被测功能,同时编写一个测试脚本 ,进行测试登录功能 。 登录函数脚本: login.py 测试脚本 :test01_login.py 3.2 pytest的运行

    2024年02月02日
    浏览(54)
  • 基于selenium的pyse自动化测试框架

    介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium所提供的方法操作更简洁。 特点: 默认使用CSS定位,同时支持多种定位方法(idnameclasslink_textxpathcss)。 本框架只是对selenium(webdriver)原生方法进行了简单的封装,精简为大约30个方法,这些方法基本能够

    2024年01月18日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包