标签: fixture

django中的initial_data fixture管理

我正在研究的django项目有大量的initial_data fixture数据.默认情况下,自动加载数据的唯一方法是调用app文件夹中的文件fixtures,并且需要命名文件initial_data.ext(ext为xml或json或yaml等).

我认为这真的很难实现.我宁愿有一个fixtures文件夹,然后在一个initial_data文件夹里面,然后在那里,为该应用程序中的每个模型一个文件.或者那种效果.现在这可以在django做吗?或者可能是其他一些更好的夹具组织方案.

python django fixture

6
推荐指数
2
解决办法
2976
查看次数

无法使用python ./manage.py dumpdata app转储数据

我在Django项目中创建了一个应用程序.出于测试目的,我想创建夹具文件.我发现我可以转储我的数据库,以便在已有数据的情况下自动创建夹具.我想使用一个灯具,所以我使用了命令python ./manage.py dumpdata app,但它返回了一大堆的清单\x02.但如果我使用python ./manage.py auth它完美运行.知道为什么我的dumpdata节目只有\x02.

提前致谢.

我附上截图如下链接:

http://www.cs.ait.ac.th/~fon/wp-content/uploads/2011/01/Screenshot.png

python django fixture

6
推荐指数
1
解决办法
6946
查看次数

有什么方法可以将参数传递给pytest fixture吗?

不是在讨论参数化夹具功能,它允许夹具多次运行以获得硬编码的参数.

我有很多测试遵循以下模式:

httpcode = 401  # this is different per call
message = 'some message'  # this is different per call
url = 'some url'  # this is different per call


mock_req = mock.MagicMock(spec_set=urllib2.Request)
with mock.patch('package.module.urllib2.urlopen', autospec=True) as mock_urlopen, \
     mock.patch('package.module.urllib2.Request', autospec=True) as mock_request:
    mock_request.return_value = mock_req
    mock_urlopen.side_effect = urllib2.HTTPError(url, httpcode, message, {}, None)
    connection = MyClass()
    with pytest.raises(MyException):
        connection.some_function()  # this changes
Run Code Online (Sandbox Code Playgroud)

从本质上讲,我有一个API客户端类,并包含自定义的,有意义的异常,将urllib2错误包装在特定于API的内容中.所以,我有这个模式 - 修补一些方法,并在其中一个上设置副作用.我在十几个不同的测试中使用它,唯一的区别是side_effect的部分使用的三个变量,以及我调用的MyClass()的方法.

有没有办法让这个pytest夹具并传入这些变量?

python fixture pytest

6
推荐指数
2
解决办法
9580
查看次数

每个套件的 boost-test 初始化(非大小写)

我需要初始化一些变量,它们在 BOOST_AUTO_TEST_SUITE 中是“全局的”,因此它们的构造函数将在套件启动时被调用,并且它们的析构函数将在最后一个相应的 BOOST_AUTO_TEST_CASE 完成后被调用

有人知道我该怎么做吗?看起来全局装置不是解决方案......

c++ fixture suite boost-test

5
推荐指数
2
解决办法
3487
查看次数

使用 pytest 动态参数化类级装置

可以从命令行参数参数化测试函数。可以将固定装置的范围限定为一个类。我想将这两件事结合起来,以便每个类都接收赋予类内固定装置的参数化参数。

(本质上,每个命令行参数我需要运行一个非常昂贵的操作,然后针对该操作的结果进行各种便宜、快速的测试,并且我不希望为每个便宜的测试重新运行昂贵的操作,所以我想要一种保存它的方法)

换句话说,我正在寻找与 pytest_generate_tests(metafunc) 等效的函数,它将用于动态参数化固定装置,而不是测试函数。

我已经尝试过但不成功的一件事是读取请求参数并通过 pytest_generate_tests 挂钩设置这些参数。

conftest.py:
    def pytest_generate_tests(metafunc):
        metafunc.parametrize("result", [
                (1,0),(1,2)
            ])

test_thing.py:
    class TestThingy:
        @pytest.fixture(scope="class")
        def result(self, request):
            a,b=request.param
            return a+b

    #@pytest.mark.parametrize("result", [(0, 1), (1, 2)])
    def test_one(self, result):
        assert result!=2
Run Code Online (Sandbox Code Playgroud)

运行此测试会导致出现以下错误(请注意,当我在没有 conftest 挂钩且注释行未注释的情况下尝试时,测试运行良好):

@pytest.fixture(scope="class")
def result(self, request):
    a,b=request.param
Run Code Online (Sandbox Code Playgroud)

AttributeError:“SubRequest”对象没有属性“param”

我也对任何其他替代方法来实现相同的结果感兴趣。

python testing fixture pytest

5
推荐指数
1
解决办法
3756
查看次数

在pytest中,如何确保在类级别之前调用模块级别的fixture

我的 pytest 很旧(版本 2.8.3)。

pytestmark = pytest.mark.usefixtures("module_level")

@pytest.fixture(scope='module')
def module_level(request):
    print("module start")
    def fin():
        print("module end")
    request.addfinalizer(fin)

@pytest.fixture(scope='class')
def class_level(request):
    print("class start")
    def fin():
        print("class end")
    request.addfinalizer(fin)

@pytest.mark.usefixtures("class_level")
class TestMyClass:  
    def test_func(self):
        pass
Run Code Online (Sandbox Code Playgroud)

但是,我得到的订单是:

class start
module start
class end
module end
Run Code Online (Sandbox Code Playgroud)

这不是我想要的。那么编写模块级设置/清理装置的正确方法是什么(并确保它在一切之前进行设置并在一切之后进行清理)?

python fixture pytest

5
推荐指数
1
解决办法
2371
查看次数

在csv中的Django夹具

对于Django测试,我想加载一个在csv文件中的fixture.最好的方法是什么?

python csv django fixture

3
推荐指数
1
解决办法
1433
查看次数

Fixture 是否可以创建 N 个对象的列表?

我想用 Fixture 创建一个包含 N 个对象的列表。

我知道我可以做到:

List<Person> persons = new List<Person>();

for (int i = 0; i < numberOfPersons; i++)
{
    Person person = fixture.Build<Person>().Create();
    persons.Add(person);
}
Run Code Online (Sandbox Code Playgroud)

有什么方法可以使用该CreateMany()方法或其他方法来避免循环?

c# fixture

3
推荐指数
4
解决办法
3925
查看次数

为什么要在工厂功能上使用pytest工厂作为固定装置?

py.test文档中,它描述了将工厂方法声明为fixture,例如:

@pytest.fixture
def make_foo():
    def __make_foo(name):
        foo = Foo()
        foo.name = name
        return foo
    return __make_foo
Run Code Online (Sandbox Code Playgroud)

与仅定义make_foo函数并使用它相比,这样做有什么好处/缺点?我不明白为什么它是固定装置。

python unit-testing fixture pytest

3
推荐指数
2
解决办法
1326
查看次数

Pytest 固定装置:在每个测试之间设置、拆卸和运行代码

我正在尝试使用 pytest 来测试我正在编写的模块。该模块是一个具有长启动时间的进程的包装器。因此,我想确保我有一个正确的设置/拆卸逻辑,以确保初始化不会发生多次。

我当前的代码如下所示:

import pytest
import leelaZeroWrapper

@pytest.fixture(scope='module')
def leela(request):
    leela = leelaZeroWrapper.LeelaWrapper()
    def quit():
        leela.quit()
    request.addfinalizer(quit)
    return leela

def test_single_play(leela):
    leela.reset()
    result = leela.play('b', 'a11')
    assert result == [{'color': 'black', 'loc': 'a11'}]

def test_single_play_uppercase(leela):
    leela.reset()
    result = leela.play('WHITE', 'A11')
    assert result == [{'color': 'white', 'loc': 'a11'}]

def test_reset(leela):
    leela.reset()
    leela.play('b', 'a11')
    leela.play('w', 'a13')
    leela.reset()
    assert leela.current_board == []
    assert leela.current_move == 0
Run Code Online (Sandbox Code Playgroud)

我注意到我的所有测试都将从调用重置我的模块开始!有没有办法将它添加到夹具中,或者您将如何解决它?

我想要的伪代码:

@pytest.fixture(scope='module')
def leela(request):
    leela = leelaZeroWrapper.LeelaWrapper()
    def quit():
        leela.quit()
    def reset():
        leela.reset()
    request.addfinalizer(quit)
    request.add_between_test_resetter(reset) …
Run Code Online (Sandbox Code Playgroud)

python fixture pytest

3
推荐指数
1
解决办法
7181
查看次数

标签 统计

fixture ×10

python ×8

pytest ×5

django ×3

boost-test ×1

c# ×1

c++ ×1

csv ×1

suite ×1

testing ×1

unit-testing ×1