第一次使用补丁。我试图修补我的一个类进行测试。如果没有尝试运行的补丁程序可以通过测试函数定义,但是有了补丁程序,测试函数定义显然需要另一个参数,我得到了一个TypeError:testAddChannelWithNamePutsChannel()takesexactly1argument(2given)错误。测试代码如下:importunittestimportmockfromnotification.modelsimportChannel,addChannelWithName,deleteChannelWithNameclassTestChannel(unittest.TestCas
我有一个带有这样一个模块的python类:xy.pyfroma.bimportClassAclassClassB:defmethod_1():a=ClassA()a.method2()然后我将ClassA定义为:b.pyfromcimportClassCclassClassA:defmethod2():c=ClassC()c.method3()现在在这段代码中,当为xy.py编写测试时,我想mock.patchClassC,有没有办法在python中实现?显然我试过了:mock.patch('a.b.ClassA.ClassC')和mock.patch('a.b.c.ClassC')这
我在使用与pytestfixture集成的模拟包中的补丁装饰器时遇到了一些神秘的事情。我有两个模块:-----testfolder-------func.py-------test_test.py在func.py中:defa():return1defb():returna()在test_test.py中:importpytestfromfuncimporta,bfrommockimportpatch,Mock@pytest.fixture(scope="module")defbrands():return1mock_b=Mock()@patch('test_test.b',mock_b
我正在为我们正在开发的某个库编写单元测试。该库利用requests.post()向外部服务器执行POSTHTTP请求。在我的UT中,我显然不想联系真正的服务器,而是要模拟响应。为此,我编写了一个函数,如下所示:defmocked_post(url,headers,data,**kwargs):response=Mock()#Somelogic,irrelevanthere.returnresponse我在我的单元测试类周围修补了这个函数:@patch('mylib.requests.post',mocked_post)classMyTest(TestCase):deftest_foo(
我尝试通过使用@patch装饰测试方法来修补提供程序类:classTestMyUnit(unittest.TestCase):...@patch(provider.Provider,autospec=True)deftest_init(self,mock_provider):pass但是,当我运行测试时,我得到了错误:*@patch(provider.Provider)**File"build\bdist.win32\egg\mock.py",line1518,inpatch**getter,attribute=\_get\_target(target)**File"build\bdi
使用模拟单元测试conn():app.pyimportmysql.connectorimportos,urlparsedefconn():if"DATABASE_URL"inos.environ:url=urlparse(os.environ["DATABASE_URL"])g.db=mysql.connector.connect(user=url.username,password=url.password,host=url.hostname,database=url.path[1:],)else:return"Error"test.pydeftest_conn(self):with
我试图了解这两种模拟方法之间的区别。有人可以帮助区分它们吗?对于这个例子,我使用passlib库。frompasslib.contextimportCryptContextfromunittestimportmockwithmock.patch.object(CryptContext,'verify',return_value=True)asfoo1:mycc=CryptContext(schemes='bcrypt_sha256')mypass=mycc.encrypt('test')assertmycc.verify('tesssst',mypass)withmock.patch(
是否可以模拟在我尝试测试的另一个函数中调用的函数的返回值?我希望模拟方法(将在我正在测试的许多方法中调用)在每次调用时返回我指定的变量。例如:classFoo:defmethod_1():results=uses_some_other_method()defmethod_n():results=uses_some_other_method()在单元测试中,我想用mock来改变uses_some_other_method()的返回值,这样在Foo中任何时候调用它都会返回我在@patch.object(...)中定义的内容 最佳答案 有
我在测试一个Django应用程序时尝试使用富有想象力的Mocktestinglibrary来模拟一些东西。.我似乎无法让它工作,我正在尝试这样做:models.pyfromsomelibimportFooClassclassPromotion(models.Model):foo=models.ForeignKey(FooClass)defbar(self):print"DosomethingIdon'twant!"test.pyclassViewsDoSomething(TestCase):view='my_app.views.do_something'deftest_enter_pr
我正在使用mock使用Python并想知道这两种方法中哪一种更好(阅读:更多Pythonic)。方法一:只需创建一个模拟对象并使用它。代码如下:deftest_one(self):mock=Mock()mock.method.return_value=Trueself.sut.something(mock)#Thisshouldcalledmock.methodandcheckstheresult.self.assertTrue(mock.method.called)方法二:使用patch创建mock。代码如下:@patch("MyClass")deftest_two(self,moc