Questions tagged «unit-testing»

单元测试是一种测试源代码的各个单元以确定它们是否适合使用的方法。

7
如何测试或模拟“如果__name__ =='__main__'”内容
说我有一个包含以下内容的模块: def main(): pass if __name__ == "__main__": main() 我想为下半部分编写一个单元测试(我想实现100%的覆盖率)。我发现执行导入/设置机制的内置的runpy模块__name__,但无法弄清楚如何模拟或检查main()函数是否被调用。 到目前为止,这是我尝试过的: import runpy import mock @mock.patch('foobar.main') def test_main(self, main): runpy.run_module('foobar', run_name='__main__') main.assert_called_once_with()

5
如何在带有unittest setUp的python中正确使用模拟
在尝试学习TDD的过程中,尝试学习单元测试并在python中使用模拟。慢慢掌握它,但不确定我是否正确执行此操作。预先警告:由于供应商API是预编译的2.4 pyc文件,因此我正在使用python 2.4进行卡住,因此我正在使用模拟0.8.0和unittest(不是unittest2) 在“ mymodule.py”中给出此示例代码 import ldap class MyCustomException(Exception): pass class MyClass: def __init__(self, server, user, passwd): self.ldap = ldap.initialize(server) self.user = user self.passwd = passwd def connect(self): try: self.ldap.simple_bind_s(self.user, self.passwd) except ldap.INVALID_CREDENTIALS: # do some stuff raise MyCustomException 现在在我的测试用例文件“ test_myclass.py”中,我要模拟ldap对象。ldap.initialize返回ldap.ldapobject.SimpleLDAPObject,因此我认为这是我必须模拟的方法。 import unittest from ldap import INVALID_CREDENTIALS from mock import …



3
在Jasmine单元测试中模拟AngularJS模块依赖性
我正在尝试在将其他模块作为依赖项的模块中进行单元测试控制器代码的单元化,但是还无法弄清楚如何正确模拟它们。 我正在使用Jasmine Framework,并使用Karma(Testacular)运行测试。 模块代码 var app = angular.module('events', ['af.widgets', 'angular-table']); app.controller('eventsCtrl', function([dependencies]){ $scope.events = []; ... }); 规格代码 describe('events module', function(){ var $scope, ctrl; beforeEach(function(){ angular.mock.module('af.widgets', []); angular.mock.module('angular-table', []); module('events', ['af.widgets', 'angular-table']); }); beforeEach(inject(function($rootScope, $controller){ $scope = $rootScope.new(); ctrl = $controller('NameCtrl', { $scope: $scope, }); })); it('should have an empty …


14
Assert.Fail()是否被视为不良做法?
我在进行TDD时经常使用Assert.Fail。我通常一次只进行一个测试,但是当我对以后要实现的事情有想法时,我会迅速编写一个空测试,其中测试方法的名称表示要实现的待办事项列表。为了确保我不会忘记,我将Assert.Fail()放在主体中。 尝试xUnit.Net时,我发现他们尚未实现Assert.Fail。当然,您始终可以Assert.IsTrue(false),但这也无法传达我的意图。我给人的印象是Assert.Fail不是故意实现的。这被认为是不良做法吗?如果可以,为什么? @Martin Meredith这不是我所做的。我确实先编写了一个测试,然后实现代码以使其正常工作。通常我一次想到几个测试。或者,我考虑在做其他事情时要编写的测试。那是我编写一个空的失败测试要记住的时候。等我开始编写测试时,我会先做好测试工作。 @Jimmeh看起来是个好主意。被忽略的测试不会失败,但它们仍会显示在单独的列表中。必须尝试一下。 @Matt Howells好主意。在这种情况下,NotImplementedException传达的意图比assert.Fail()更好。 @米奇小麦这就是我想要的。似乎它被排除在外,以防止以我滥用它的另一种方式被滥用。

5
在Mocha中describe()的作用是什么?
Mocha官方站点上的文档包含以下示例: describe('User', function(){ describe('#save()', function(){ it('should save without error', function(done){ var user = new User('Luna'); user.save(function(err){ if (err) throw err; done(); }); }) }) }) 我想知道何时应该将测试嵌套在describe函数中以及其基本目的describe是什么。我可以比较传递给describe编程语言注释的第一个参数吗?describe控制台的输出中未显示任何内容。是仅出于可读性目的,还是该功能还有其他用途? 如果我这样使用,有什么问题吗? describe('User', function(){ describe('#save()', function(){ var user = new User('Luna'); user.save(function(err){ if (err) throw err; done(); }) }) }) 如果我这样做,则测试仍会通过。

6
以某种方式使用py.test时可以使用python调试器进行调试吗?
我正在使用py.test对python程序进行单元测试。我希望使用python调试器以正常方式调试测试代码(在代码中我的意思是pdb.set_trace()),但是我无法使其正常工作。 将pdb.set_trace()放入代码中不起作用(引发IOError:捕获输出时从stdin读取)。我也尝试使用--pdb选项运行py.test,但是如果我想探索断言之前发生的事情,那似乎并没有解决问题。当断言失败时,它会中断,并且从那一行继续进行就意味着终止程序。 有谁知道获取调试的方法,或者调试和py.test并不意味着在一起吗?

8
Android单元测试需要上下文
我正在编写我的第一个Android数据库后端,并且正在努力对数据库的创建进行单元测试。 目前,我遇到的问题是获取有效的Context对象,以传递给我的SQLiteOpenHelper实现。有没有办法在扩展TestCase的类中获取Context对象?我想到的解决方案是在TestCase的设置方法中实例化一个Activity,然后将该Activity的Context分配给我的测试方法可以访问的字段变量...但是似乎应该有一个更简单的方法。

6
使用Jasmine进行角单元测试:如何删除或修改spyOn
AngularJS v1.2.26 茉莉花v2.2.0 如何更改或删除a的行为spyOn?当我尝试覆盖它时,出现以下错误:Error: getUpdate has already been spied upon var data1 = 'foo'; var data2 = 'bar'; describe("a spec with a spy", function(){ beforeEach(module('app')); var $q; beforeEach(inject(function(_updateService_, _$q_){ updateService = _updateService_; //spy the results of the getUpdate() $q = _$q_; var deferred = $q.defer(); deferred.resolve( data1 ); spyOn(updateService, 'getUpdate').and.returnValue(deferred.promise); …

8
Jasmine使用templateUrl测试AngularJS指令
我正在使用Jasmine编写AngularJS的指令测试,并与它们一起使用templateUrl:https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行测试时,我得到了要点中包含的错误: Error: Unexpected request: GET views/currency-select.html 从我在文档中阅读的内容来看,我认为自己做得正确,但是事实并非如此-我在这里想念的是什么? 谢谢

11
具有返回随机结果的函数的单元测试
我不认为这是特定于语言或框架的,但是我正在使用xUnit.net和C#。 我有一个函数,它返回一定范围内的随机日期。我输入了一个日期,返回日期始终在给定日期之前的1到40年之间。 现在,我只是想知道是否有一个很好的方法来对此进行单元测试。最好的方法似乎是创建一个循环并让函数运行100次,然后断言这100个结果中的每一个都在期望的范围内,这是我目前的方法。 我还意识到,除非能够控制我的Random生成器,否则就不会有完美的解决方案(毕竟结果是随机的),但是我想知道当您必须测试在其中返回随机结果的功能时采用什么方法?一定范围?

2
Visual Studio 2013 MSTest与NUnit
我的公司正在将Visual Studio 2012升级到2013 Premium。在此过程中,我们还希望使用以下方法开始自动化测试Visual Studio Team Services 过去,我已经阅读了几篇MSTest vs nUnit的文章和文章,但是大多数文章都比较了旧版本的MSTest。此外,与MSTest相比,nUnit具有许多有利的评价。 我的问题是,考虑到Microsoft对ALM的承诺,敏捷实践以及他们已添加到VS2013 Premium和Visual Studio Team Services中以促进和鼓励自动化测试的所有新内容,MSTest与nUnit相比如何? 在决定要使用的测试框架之前,我还应该考虑其他哪些因素?

3
NUnit 3.0和Assert.Throws
我正在用NUnit 3.0编写一些单元测试,与v2.x不同,ExpectedException()它已从库中删除。 根据这个答案,我可以肯定地看到尝试专门捕获测试中期望系统抛出异常的地方的逻辑(而不是仅仅说“测试中的任何地方”)。 但是,我倾向于非常明确地说明我的“安排”,“行动”和“声明”步骤,因此这是一个挑战。 我曾经做过类似的事情: [Test, ExpectedException(typeof(FormatException))] public void Should_not_convert_from_prinergy_date_time_sample1() { //Arrange string testDate = "20121123120122"; //Act testDate.FromPrinergyDateTime(); //Assert Assert.Fail("FromPrinergyDateTime should throw an exception parsing invalid input."); } 现在,我需要执行以下操作: [Test] public void Should_not_convert_from_prinergy_date_time_sample2() { //Arrange string testDate = "20121123120122"; //Act/Assert Assert.Throws<FormatException>(() => testDate.FromPrinergyDateTime()); } 在我看来,这并不可怕,但是却使《法案》和《断言》混为一谈。(显然,对于这个简单的测试,它并不难遵循,但是在大型测试中可能更具挑战性)。 我有一位同事建议我Assert.Throws完全摆脱掉,然后做些类似的事情: [Test] public void Should_not_convert_from_prinergy_date_time_sample3() …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.