Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建接受动态文本数据的pytest测试夹具的最干净方法_Python_Unit Testing_Pytest - Fatal编程技术网

Python 创建接受动态文本数据的pytest测试夹具的最干净方法

Python 创建接受动态文本数据的pytest测试夹具的最干净方法,python,unit-testing,pytest,Python,Unit Testing,Pytest,我有一个类,它在实例化时接收文本数据,还包含在文本数据中搜索主机名和数据中心信息的解析方法: class SystemConfig: def __init__(self, text_data): self.text_data = text_data def get_server(self): match = re.search('.+ (server.+?)', self.text_data, re.S) if match: return match

我有一个类,它在实例化时接收文本数据,还包含在文本数据中搜索主机名和数据中心信息的解析方法:

class SystemConfig:
  def __init__(self, text_data):
    self.text_data = text_data

  def get_server(self):
    match = re.search('.+ (server.+?)', self.text_data, re.S)
    if match:
      return match.group(1)

  def get_datacenter(self):
    match = re.search('.+? (dc.+?)', self.text_data, re.S)
    if match:
      return match.group(1)    
我正试图找出为此编写pytest装置的最有效方法

我要走的路线如下:

@pytest.fixture
def server_data():
  return SystemConfig('row 1 rack 2 server001')

@pytest.fixture
def datacenter_data():
  return SystemConfig('row 1 rack 2 dc001')

def test_server_data(server_data):
  assert server_data.get_server() == 'server001'

def test_server_data(server_data):
  assert server_data.get_datacenter() == 'dc001'
每次我需要调整文本数据时实例化一个类对我来说效率很低。我可能需要再编写20种解析方法来获取特定的文本条目

对于编写测试夹具的最佳方法的任何指导,我们都非常感谢


如果您需要进一步的澄清,也请让我知道。先谢谢你

对原始类进行结构化似乎有些奇怪,因为正则表达式解析是为get方法完成的,而get方法本身是非语法的——每次调用该方法时都要重新解析字符串。为什么不实现一个类方法,例如SystemConfig.from_字符串,来进行解析呢?然后_uinit__uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。为了进一步澄清,输出来自一个文件。因此,我应该列出一个包装器,它打开文件,将文件数据读入变量,然后用该数据实例化类。文件本身有各种条目和其他需要解析的有趣数据。所以我的主要问题是,不是所有的东西都是行机架服务器dc:-。因为我正在尝试做TDD,我或多或少地在寻找一个起点。配置文件本身是不一致的,所以我必须依靠关键字和位置条目来提取我需要的内容。我相信你想要的是caleld,我不确定这是否与我说的内容冲突。一旦你的代码工作,考虑把它的一些反馈。詹姆斯。谢谢你提供这个,我相信这会让我走上正确的方向。我的问题是。。使用虚假的输出,并用我想要用stringIO之类的东西解析的确切文本补充测试用例是否更好?基本上解耦init所需的值和我需要解析的实际文本?恐怕如果我还有15个方法,参数列表可能会很长。我希望对于这个特定的用例有一个最佳实践。