我正在寻找一个pytest结构,可以将灯具与测试完全分开。这种分离的原因是我想将夹具目录作为外部项目包含在Subversion中,并在多个项目之间共享。
所需结构的树
project
| conftest.py
|
+---fixtures
| __init__.py
| conftest.py
| fixture_cifs.py
| fixture_ftp.py
| fixture_service.py
|
\---tests
| test_sometest1.py
| test_sometest2.py
|
\---configurations
sometest1.conf
sometest2.conf
Run Code Online (Sandbox Code Playgroud)
我想在单独的文件中实现每个灯具的功能,以避免出现一个巨大的缺陷conftest.py。conftest.py只会包含包装器,以返回每个带有注释的灯具的实例@pytest.fixture。当和文件都在同一目录中时conftest.py,将夹具与测试一起使用是没有问题的。fixture_*.pytest_*.py
然而,当灯具在一个子目录中分离我从pytest一个错误fixture 'cifs' not found,available fixtures: ...。我还没有找到任何文档说明如何将固定装置放置在之外test_*.py或conftest.py附近test_*.py,但是也没有任何文件表明这也不起作用。
使用pytest时,如何将灯具放置在它们自己的子目录中?
我需要从注册表(最好)或文件中读取设置。该驱动程序是一个内核驱动程序,启动类型设置为SYSTEM,因此所有服务和 WinAPI 不一定可用。
我试图使用该RtlQueryRegistryValues函数从注册表中读取单个字符串值,但无论我做什么,我似乎都会得到相同的0xC0000034错误代码,并将其转换为STATUS_OBJECT_NAME_NOT_FOUND.
根据 MSDN 上提供的文档,当路径参数与有效密钥不匹配或设置了特定标志并且不满足该标志的特定条件时STATUS_OBJECT_NAME_NOT_FOUND返回。RtlQueryRegistryValues据我所知,注册表项实际上存在于我的测试机器中,并且我没有使用该RTL_QUERY_REGISTRY_REQUIRED标志。
我尝试读取的注册表值位于 下HKEY_LOCAL_MACHINE/SOFTWARE/company/ProjectName,我尝试读取默认值和名为 的 REG_SZ 值parameter。对的调用RtlQueryRegistryValues是在加载驱动程序的 DriverEntry(...) 阶段执行的。
我不知道我做错了什么,而且由于我是内核驱动程序的新手,而且调试过程非常繁琐,我不确定我是否只是错误地引用了注册表值,或者是否在系统启动的这个阶段,注册表完全可用。
mydriver.c
NTSTATUS DriverEntry(...) {
NTSTATUS regStatus = 0;
UNICODE_STRING data;
RTL_QUERY_REGISTRY_TABLE query[2];
WCHAR* regPath = L"\\Registry\\Machine\\SOFTWARE\\Company\\ProjectName";
RtlZeroMemory(query, sizeof(RTL_QUERY_REGISTRY_TABLE) * 2);
data.Buffer = NULL;
data.MaximumLength = 0;
data.Length = 0;
// query[0].Name = L"Parameter";
query[0].Name = L""; // L"" refers to the default value
query[0].Flags = …Run Code Online (Sandbox Code Playgroud) 我有一个深层的XML结构,其中包含许多我无法映射到单个Java类的无意义包装器。使用@XmlPath映射简单的数据类型是在公园里散步,但是当涉及到实际上需要自己的类的类型时,我不太确定该怎么做,尤其是当这些类型也应该放在列表中时。
我element在将以下示例中的所有类型映射到我的Element类时遇到问题。由于elements包装器驻留在使用@XmlPathI 映射的资源中,因此我不能使用@XmlElementWrapper,否则我通常会这样做。
示例XML结构
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<s:root xsi:schemaLocation="http://www.example.eu/test ResourceSchema.xsd" xmlns:s="http://www.example.eu/test" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<s:resource>
<s:information>
<s:date>2013-07-04</s:date>
<s:name>This example does not work</s:name>
</s:information>
<s:elements>
<s:refobj>
<s:id>1</s:id>
<s:source>First Source</s:source>
</s:refobj>
<s:refobj>
<s:id>2</s:id>
<s:source>Second Source</s:source>
</s:refobj>
<s:refobj>
<s:id>5</s:id>
<s:source>Fifth Source</s:source>
</s:refobj>
</s:elements>
</s:resource>
</s:root>
Run Code Online (Sandbox Code Playgroud)
根java
@XmlRootElement(name = "root")
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {
@XmlPath("resource/information/date/text()")
private String date;
@XmlPath("s:resource/s:information/s:name/text()")
private String name;
@XmlPath("resource/elements/refobj")
private List<RefObj> refObjs;
public String getDate() {
return date;
}
public …Run Code Online (Sandbox Code Playgroud)