我之前也问过这个,但对答案不满意。
我用什么:
- 在 Django/python 网站上工作。
- 在本地在 python 虚拟环境上完成开发。
- 使用 GIT 作为我的 SCM
- 为 GIT 的开发人员和生产分支部署了单独的虚拟服务器
- 使用 Jenkins CI 进行持续集成。为 Jenkins 部署单独的虚拟服务器
在职的:
- 我有网站的单元测试、冒烟测试和集成测试。Jenkins 已经设置好,每当代码从我的本地 git 分支推送到 git repo 上的开发人员和生产分支时,都会在 Jenkins 中触发构建。
问题:
- 当我执行“python manage.py test”时,我的测试在本地通过
- 当代码被推送到其他分支(开发人员和生产)时,Jenkins 中的随机测试(主要是单元测试)失败。
- 测试失败后,如果我通过按 Jenkins 中的“立即构建”按钮手动进行构建,测试通常会通过并且构建成功。
- 有时,当没有对代码进行任何更改并且代码仍被推送到这些分支时,Jenkins 中的测试会随机失败。
一些常见错误:
- 断言错误:302!= 200
- TypeError:“NoneType”对象不可下标
- IndexError:列表索引超出范围
- AssertionError: datetime.datetime(2012, 12, 5, 0, 0, 27, 218397) != datetime.datetime(2012, 12, 5, 0, 0, 27, 239884)
- AssertionError:响应重定向到“x”预期“y”
迄今为止的故障排除:
- 在我的机器和虚拟服务器上本地运行所有测试。他们运行良好。
- 在本地和虚拟服务器上运行单个失败的测试。他们运行良好。
- 试图重新创建失败的条件,但截至目前,测试正在通过。
我看到的唯一问题是,每当代码被推送到开发人员和生产分支时,随机测试失败就会出现。一些测试反复失败。
谁能告诉我我还能做些什么来解决这个问题。我试着用谷歌搜索这个问题,但徒劳无功。我知道 xunitpatterns 网站对不稳定的测试行为有一些很好的见解,但它没有帮助,因为我在那里尝试了大部分东西。