有没有可能让const&真正不可变?
int* side_effect;
void function(int const& i){
*side_effect = 123;
}
int main(){
int i = 0;
side_effect = &i;
//based on the function signature, i is suspected not to change.
//however, that is not the case.
function(i);
}
有没有什么编译器警告、属性、编译器扩展或语言特性可以用来避
我是Python新手,只有在传递特定的参数时,我才会尝试模拟函数。如果传递了所需的参数以外的其他参数,则调用原始函数。
在Python2.7中,我尝试了这样的方法:
from foo import config
def test_something(self):
original_config = config # config is a Module.
def side_effect(key):
if key == 'expected_argument':
return mocked_result
e
我想要创建一个模拟方法,它调用被模拟的底层方法。
我设想如下所示,但我找不到任何关于模拟对象的文档,这些文档保存着对被模拟对象的引用,我在下面将其表示为[[wrapped_method_foo]]:
from mock import patch
class Foo(object):
def __init__(self, state):
self.state = state
def foo(self, a):
print "real foo", a
return a + self.state
f = Foo(20
我必须测试从远程API获取数据的解析器的行为。数据是分页的,这意味着我收到一个JSON,其中包含关于当前页和最后一页的元信息。因此,我想用不同的数据页测试解析器。
import unittest
from unittest.mock import patch
def load():
file_name = f"plants_info_{load.counter}.json"
print(file_name)
with open(f"./{file_name}", "r") as file:
d
我已经尝试过了: def test_send_confirm_hit(monkeypatch):
hit = False
def called():
global hit
hit = True
monkeypatch.setattr("web.email.send_confirm", called)
# ... some event that will cause web.email.send_confirm to be hit
assert hit # verify send_confirm w
为了测试轮询函数,我想模拟子函数的调用,这样第一次调用它就会失败,第二次调用它就会成功。这是它的一个非常简化的版本:
poll_function(var1):
value = sub_function(var1) # First call will return None
while not value:
time.sleep(POLLING_INTERVAL)
value = sub_function(var1) # A subsequent call will return a string, e.g "data"
我正在尝试创建一个使用Python补丁的单元测试,但是我无法让它工作。我尝试了各种方法来打补丁,但没有成功。 要测试的文件: test_me.py导入another_file.py,其中包含这里需要的两个函数(其中包括func1和func2 )。 在test_me.py中: import another_file.py as another_file_alias
# Make use of the 2 functions
another_file_alias.func1()
another_file_alias.func2() 在实际的单元测试test.py中,我有两个模拟函数,还需要修
我对单元组有意见。修补方法不返回元组列表,而只返回一个元组:
我的代码
from date import Date
from ditreport import DIT_report
from unittest import TestCase
from unittest.mock import patch, Mock
def mock_get_uuid_messages_with_tmpls():
result = [('43e89d3a-af91-465f-a2db-3147988d1168',), ('93963bf6-9f75-4ffe-80e6-7453
(以下代码可以在木星中运行。)我有一个B类,它使用A类,需要测试。
class A:
async def f(self):
pass
class B:
async def f(self):
a = A()
x = await a.f() # need to be patched/mocked
我有下面的测试代码。它似乎模拟了A的类方法,而不是实例方法。
from asyncio import Future
from unittest.mock import MagicMock, Mock, patch
async def t
首先,如果这个问题已经被回答了,我很抱歉,但是我已经到处找遍了,什么也找不到。
我有一个功能可以做到这一点(总之):
def func(path):
with open(path) as f:
json.load(f)
我想对它进行单元测试,我想要的是,当我使用open作为上下文管理器时,f是我传递给open的参数的名称。我遇到的问题是,我不能在适当的模块中模拟enter方法,每次都会中断。这就是我目前正在做的事情:
def setUp(self):
# Setup the content of the config files for the tests
json
我有代码和测试文件:
code.py
class Code:
def do_something_inside(self, a, b, c):
return a-b-c
def do_something(self, b, c):
self.do_something_inside(30, b, c)
test.py
import unittest
import unittest.mock as mock
from code import Code
class TestStringMethods(unittest.TestCase):
d
不久前,我在StackOverflow上找到了以下解决方案--用于从模拟函数中引发错误(对不起,我再也找不到原始链接了):
def _mock_raises_error(my_mock, error_type, output):
my_mock.return_value = mock.Mock()
my_mock.side_effect = error_type(output)
# for example
with mock.patch('mymodule.interface.function') as mock_fu
我有一个可以返回多个值的python函数。我的函数:
def myExampleFunction(a,b)
# here is my code
return name, number1, number2
def FunctionIWantToTest(self):
# here is my code
myName, myNumber1, myNumber2 = self.myExampleFunction(a,b)
我想将自己的值赋给FunctionIWantToTest的返回值。所以,我试着用nosetest测试第二个函数,但我不知道如何模拟myExamp
我尝试在Python类中执行以下方法:
def find_tests(self):
tests_dir = glob.glob("tests/*")
if not tests_dir:
return None
# Filter out only the files in tests/ then get the test names.
tests = [os.path.basename(t) for t in tests_dir if os.path.isfile(t)]
使用以下测试:
@patch('glob.glob
我想根据传递的参数修补我已有的get_age()方法。
假设我在get_age.py中多次使用相同的get_age()方法。
get_age("Anna")
...
get_age("Ben")
然后在测试中,我想做的是:
@patch('get_ages.get_age') <-- mock getting age of Ben
@patch('get_ages.get_age') <-- mock getting age of Anna
def test_get_ages(self, age_A, age_B):