seldom 自动化测试框架

Apache License 2.0
python
windows/mac OS/Linux
虫师 · 2022年01月19日 · 8766 次阅读 · 2 条评论

seldom 简述

基于 unittest 的 Web UI/HTTP 自动化测试框架。

官方文档:
https://seldomqa.github.io/

seldom 设计理念

简单一句话就是回到最初写代码的样子。

自动化测试框架很多,只有在测试领域有一个比较奇怪的现象,如何用不写代码的方式解决自动化问题。为此,我们发明了用特定领域语言写用例,发明了用 excel 写用例,发明了用 YAML/JSON 写用例。这些方案看似简化了用例的编写,但是,会让解决复杂的问题变的更复杂。比如实现个分支判断/循环,传递参数,调用封装的步骤,编程语言中用 if/for 、变量、函数就实现了,但是用非编程语言的方式写用例处理起来就很麻烦。最终,并不能完全脱离编程,那么为什么不一开始就选择一个编程框架呢?

然而,seldom 的定位是尽量用简单的设计去解决复杂问题,例如 Flask、requests、yagmail...等,这些框架/库都有一个共同的特点,用简单的方式去解决复杂的问题,在编程语言这个层面,并不会给你太多限制,你可以完全用他,也可以只用一部分,也可以平滑的实现它不支持的功能。

seldom 特点

  • 提供更加简单 API 编写 web UI/HTTP 接口自动化测试
  • 提供脚手架,快速生成自动化测试项目
  • 提供强大的数据驱动
  • 提供自动生成测试数据
  • 提供适用于 web UI/HTTP 测试的断言
  • 通过数据库操作(SQLite/MySQL)
  • 支持设置用例依赖
  • 支持用例标签,以及黑白名单
  • 支持用例失败/错误重跑 + 截图(web UI)
  • 自动生成 HTML/XML 测试报告

简单实例

  • web UI 测试
import seldom


class BaiduTest(seldom.TestCase):

    def test_case(self):
        """a simple test case """
        self.open("https://www.baidu.com")
        self.type(id_="kw", text="seldom")
        self.click(css="#su")
        self.assertTitle("seldom_百度搜索")


if __name__ == '__main__':
    seldom.main()
  • HTTP 测试
import seldom


class TestRequest(seldom.TestCase):

    def test_put_method(self):
        self.put('/put', data={'key': 'value'})
        self.assertStatusCode(200)

    def test_post_method(self):
        self.post('/post', data={'key':'value'})
        self.assertStatusCode(200)

    def test_get_method(self):
        payload = {'key1': 'value1', 'key2': 'value2'}
        self.get("/get", params=payload)
        self.assertStatusCode(200)

    def test_delete_method(self):
        self.delete('/delete')
        self.assertStatusCode(200)


if __name__ == '__main__':
    seldom.main(base_url="http://httpbin.org")
评论列表
虫师 发表于 2023年03月01日

@testor 可以加入 QQ 技术交流群。 随时解答问题,也可以提需求。项目的发展 离不开 用户的推动。

Jare 发表于 2023年02月21日

框架很好用,也很轻量化,已落地到实际的接口测试中,就是接口断言层面能否更丰富一下!