使用单元测试构建Python包的最常用方法如下:
package/
__init__.py
module_1.py
module_2.py
module_n.py
test/
__init__.py
test_module_1.py
test_module_2.py
test_module_n.py
Run Code Online (Sandbox Code Playgroud)
我想区分单元测试(方法和功能)和集成测试(使用整个包并可能涉及其他资源).也许这些测试应该在不同的包中,具有不同的文件名,和/或包括某些文档字符串注释.
这样做是否有标准惯例?
所以我有一个Selenium功能测试套件.我已经在一些测试中测试了登录/注册功能,方法是将Selenium客户端导航到注册页面,输入用户名和密码,然后告诉Selenium使用相同的凭据登录.现在我想测试网站"登录所需"区域的其他部分,而不必告诉Selenium点击并在测试浏览器中输入文本.
换句话说,我想使用这样的东西(我在视图单元测试中使用得很好):
self.client = Client()
self.user = User.objects.create_user('temporary', 'temporary@gmail.com', 'temporary')
self.user.save()
self.client.login(username='temporary', password='temporary')
Run Code Online (Sandbox Code Playgroud)
在我的Selenium测试中,所以我不必在每次测试中重复冗长的手动登录过程(因为我已经在之前的测试中测试过登录系统,如前所述)
截至目前,我只是为每个需要登录的测试复制并粘贴"登录流程"Selenium说明.这导致我的测试每次增加5-6秒,这使我的function_tests.py文件非常臃肿.
我所有的谷歌搜索都带我到教我如何用Selenium测试登录的页面.
提前致谢.
我使用NHibernate作为我的dataacess,有一段时间我并没有使用SQLite进行本地集成测试.我一直在使用文件,但我想我会把:memory:选项.当我启动任何集成测试时,似乎创建了数据库(NHibernate吐出表创建sql)但是与数据库交互会导致错误.
有没有人让NHibernate与内存数据库一起工作?它甚至可能吗?我正在使用的连接字符串是这样的:
Data Source=:memory:;Version=3;New=True
Run Code Online (Sandbox Code Playgroud) 让我从定义开始:
单元测试是一种软件验证和验证方法,程序员在其中测试各个源代码单元是否适合使用
集成测试是软件测试的活动,其中各个软件模块组合在一起并作为一组进行测试.
虽然它们经常用于不同的目的但这些术语是混合的.开发人员将自动集成测试称为单元测试.还有一些人认为哪一个更好,在我看来这根本就是一个错误的问题.
我想请求开发社区分享他们为什么自动集成测试无法取代经典单元测试的意见.
以下是我自己的观察:
编辑:再次澄清:问题不在于是否使用集成或单元测试,而是关于哪一个更有用.基本上我想收集开发团队的参数,这些团队只编写集成测试并将它们视为单元测试.涉及来自不同层的组件的任何测试都被视为集成测试.这是与单元测试相比较,其中隔离是主要目标.
谢谢,安德烈
有没有办法使用Espresso测试小吃店出现的正确文字?
我有一个简单的电话来创建一个小吃吧
Snackbar.make(mView, "My text", Snackbar.LENGTH_LONG).show();
Run Code Online (Sandbox Code Playgroud)
我没有运气就试过这个
onView(withText("My text")).inRoot(withDecorView(not(is(mActivityRule.getActivity().getWindow().getDecorView())))).check(matches(isDisplayed()));
Run Code Online (Sandbox Code Playgroud) android integration-testing android-testing android-espresso android-snackbar
我的应用程序有几个层次:中间件,控制器,管理器.控制器接口与中间件一样:( req,res,next).
所以我的问题是:如何在不启动服务器的情况下测试我的控制器并向localhost发送"真实"请求.我想要做的是创建请求,响应实例作为nodejs,然后只调用控制器方法.
像这样的东西:
var req = new Request()
var res = new Response()
var next = function(err) {console.log('lala')}
controller.get_user(req, res, next)
Run Code Online (Sandbox Code Playgroud)
任何建议都非常感谢.谢谢!
PS我之所以这样做的原因是最后我想测试响应对象是否包含玉视图的正确变量.
简短的问题是:如何从命令行单元测试中使iPhone(objective-c)文件操作正常工作?
长问题,有解释:这最终将成为一个脚本,通过Hudson实例为我的iPhone构建执行自动构建/测试.关于makdad关于这个 SO问题的链接,我可以成功地从命令行(半)运行单元测试.
但是,我的一个测试失败了.测试将调用Caching Service类来保存文件,然后尝试检索它.但是,从命令行运行测试时,文件I/O似乎不起作用:(.
对于参考,通过Xcode GUI运行单元测试不会导致此类错误.
我正在使用NSFileHandle方法调用来获取写入句柄.如果它们返回nil,则使用创建文件
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
Run Code Online (Sandbox Code Playgroud)
我认为这可能与模拟器缓存目录路径中的空格有关.我在正确的轨道上吗?如果是的话,我该怎么纠正这个?
另请注意,模拟器需要不运行才能使其正常工作,模拟器以编程方式启动并且不显示GUI.如果它正在运行,则命令行构建失败.
我开始在我的项目中使用单元测试,并且正在编写在方法/功能级别进行测试的测试.
我理解这一点,这是有道理的.
但是,什么是集成测试?根据我的阅读,它将测试范围扩展到测试应用程序的更大功能.
这意味着我编写了一个新的测试套件来测试更大的东西,例如(在电子商务网站上)结账功能,用户登录功能,购物篮功能.所以在这里我将编写3个集成测试?
这是否正确 - 如果没有,有人可以解释是什么意思.
此外,集成测试是否涉及ui(此处的Web应用程序上下文),并将使用selenium等自动化.或者是集成测试仍然在代码级别,但是将差异类和代码区域联系在一起.
我正在研究一些包含数据库访问的代码.测试驱动开发是否包括集成测试以及通常的单元测试?
谢谢!
我读过Maven Failsafe插件是专门为运行集成测试而设计的.目前我正在开发一个多模块项目,集成测试在自己独立的模块中,用TestNg编写并使用Surefire插件运行.我们没有与单元测试冲突,因为只有集成测试在该模块的测试阶段运行.要在测试之前设置环境,并在运行测试后进行清理,@BeforeSuite @AfterSuite请使用TestNg注释.因此,不需要使用Failsafe插件使用的pre-integration-test阶段,integration-test阶段,post-integration-test阶段.
pre-integration-test,post-integration-test阶段无需编写Maven插件?testng integration-testing maven maven-surefire-plugin maven-failsafe-plugin