code 和 codeless 不是 01 问题。外部环境决定生产力,对于测试平台来说,什么样的用户决定它需要具备什么样的功能。测试平台一般是测试人员使用,有会代码的和不会代码的,不会代码的希望能不写代码就实现自动化。测试平台有时候开发也会使用,虽然开发会代码,但是他们压根对写测试代码不感兴趣,也希望不写代码就能实现自动化。code 对于技术性测试来说是自由,codeless 对于非技术测试来说是刚需!二者缺一不可。
功能测试比自动化测试能发现的 Bug 多得多,自动化测试并不是为了发现更多 Bug。
自动化测试主要是为了解决手动重复性工作,减少成本,避免人为疏漏,且作为辅助手段,能发现一些功能测试遗漏 Bug。
自动化测试是必须的,因为公司需要能体现测试技术的产物,自动化就是最众所周知的一种。
《teprunner 测试平台 Django 引入 pytest 完整源码》
《teprunner 测试平台测试计划批量运行用例》
等文章已经更新:
https://dongfanger.gitee.io/blog/chapters/teprunner%E5%BC%80%E6%BA%90%E6%B5%8B%E8%AF%95%E5%B9%B3%E5%8F%B0.html
算上学习摸索时间,前前后后估计得有一两个月吧。全部是我一个人开发的。
脚本编辑器是指网页上面那个么?用到了 vue2-ace-editor vue-monaco-editor highlight.js
driver 问题有两种比较优雅的方式。
方式一,autouse,参考代码:
class TestClass:
@pytest.fixture(autouse=True)
def transact(self, request, db):
db.begin(request.function.__name__)
yield
db.rollback()
def test_method1(self, db):
assert db.intransaction == ["test_method1"]
def test_method2(self, db):
assert db.intransaction == ["test_method2"]
方式二,conftest,参考代码:
这个报错是因为 fixture 不能直接 get_driver() 来调用,而是应该作为函数参数,再 driver = get_driver。
scope="session"是用 conftest 最优雅的方式。
《流畅的 Python》作者写道:“在 set 加入 Python 之前,我们就是把字典加上无意义的值当作集合来用的。”
我也面临着相同痛点,最后选择了做测试平台。要不要测试平台,就个人来言,很需要,不但能解决这些痛点,还能提升技术能力。就公司而言,看领导支不支持,不支持的话就算做的再好,仍然会被视作浪费时间,没有价值;支持的话,行动起来,做好多付出时间的准备。
感谢大佬肯定!要学习的还有很多...
django-apschedule 轻量级插件
毕业后做了三年功能测试建议:多学点测试技术,内心上要拥抱编程,不要对代码有抵触。
给了基本框架还算好 网上找找模板或者文档 依葫芦画瓢 应该能交差 先不用要求自己写的多么完美
先把现有数据库表删掉,更新下代码,重新执行一遍应该就可以了。
原因是我上传代码时忽略掉了 migrations 文件夹,导致 user 没有被识别到。
让 a, b 的随机函数分别只执行一次,参考下这个:
http://www.zzvips.com/article/137987.html
应该是你用了其他 Python 第三方库造成的。
楼主的实验挺棒,揭示了 pytest 分布式执行用例的一个原理,说下我的理解,有 2 个 worker 会来收集测试,因为你改了生成规则,用随机函数时,会生成 4 个不同 id 的测试,实际上应该是 2 个才对,于是在收集过程中就报错了。pytest 的 each 模式会让每个 worker 执行相同测试,load 模式会根据 worker 负载均衡分配测试,但无论哪种模式,每个 worker 收集到的用例集需要一致。
ttps://dongfanger.gitee.io/blog/chapters/teprunner开源测试平台.html
可以访问这个。
是的,参考了 FasterRunner 前端代码,用的同一个组件。顶部导航栏左侧菜单面包屑等也参考了 Tcloud 前端代码。
还要一个重要原因是,通过 Git 来管理,不太好统计和跟踪,不方便共享后运行,做成平台能解决这些问题。实际上我们代码还是在 PyCharm 来写的,平台提供了本地下载的功能,可以把配置好了环境变量和 fixtures 打包到本地使用。第一次写代码是在本地,调试跑通后,复制粘贴到平台管理,后续维护和别人使用都能在平台上快捷操作。
测试平台应该做成什么样,我觉得还是看公司业务和团队构成。如果是需要让只会功能测试或者不愿接触代码的同事用起来的话,那么就要做成填表格或者拖拽形式的。我们这边业务并不复杂,除了 http 协议,还涉及到 websocket、protobuf 等协议,只用 requests 封装成前端控件来操作,扩展性可能不太够,加上测试团队都会写 Python 也愿意用这种方式做自动化,pytest 写起来还算轻松,简单直接高效,就采取了这种方式。小公司小团队。