基于 unittest 的 Web UI/HTTP 自动化测试框架。
官方文档:
https://seldomqa.github.io/
简单一句话就是回到最初写代码的样子。
自动化测试框架很多,只有在测试领域有一个比较奇怪的现象,如何用不写代码的方式解决自动化问题。为此,我们发明了用特定领域语言写用例,发明了用 excel
写用例,发明了用 YAML/JSON
写用例。这些方案看似简化了用例的编写,但是,会让解决复杂的问题变的更复杂。比如实现个分支判断/循环,传递参数,调用封装的步骤,编程语言中用 if/for 、变量、函数就实现了,但是用非编程语言的方式写用例处理起来就很麻烦。最终,并不能完全脱离编程,那么为什么不一开始就选择一个编程框架呢?
然而,seldom 的定位是尽量用简单的设计去解决复杂问题,例如 Flask、requests、yagmail...等,这些框架/库都有一个共同的特点,用简单的方式去解决复杂的问题,在编程语言这个层面,并不会给你太多限制,你可以完全用他,也可以只用一部分,也可以平滑的实现它不支持的功能。
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()
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")
@testor 可以加入 QQ 技术交流群。 随时解答问题,也可以提需求。项目的发展 离不开 用户的推动。
框架很好用,也很轻量化,已落地到实际的接口测试中,就是接口断言层面能否更丰富一下!