gpt4 book ai didi

python - 为具有全局变量的方法创建单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 11:06:41 25 4
gpt4 key购买 nike

我有一个使用大量全局变量的程序,我希望为程序中的某些方法编写一些单元测试。

当我开始编写代码时,我是 python 的新手,现在我意识到我应该一直在测试。程序中的一些方法如下:

class Wordnet():

def __init__(self):
self.graph = Graph()
self.before_at = ''
self.after_at = ''
self.word_part = ''
self.gloss_part = ''
self.lex_filenum = ''

def process_file(self):
self.file = open("testing_line.txt", "r")
return self.file

def line_for_loop(self, file):
for line in file:
self.split_pointer_part(line)
self.split_word_part(line)
self.split_gloss_part(line)
self.process_lex_filenum(self.word_part)

def split_pointer_part(self, line):
self.before_at, self.after_at = line.split('@', 1)
return self.before_at, self.after_at

def split_word_part(self, line):
self.word_part = line.split()
return self.word_part

def split_gloss_part(self, line):
self.gloss_part = line.strip().split('|')
return self.gloss_part

def process_lex_filenum(self, word_part):
self.lex_filenum = word_part[1]
return self.lex_filenum

if __name__ == '__main__':
wordnet = Wordnet()
my_file = wordnet.process_file()
wordnet.line_for_loop(my_file)

令我困惑的是变量如何传递到测试类以及我如何着手编写测试方法。到目前为止,这就是我所拥有的:

class WordnetTestCase(unittest.TestCase):
def setUp(self):
self.wn = wordnet.Wordnet()
self.graph = wordnet.Graph()
self.before_at = wordnet.before_at
self.after_at = wordnet.after_at
self.word_part = wordnet.word_part
self.gloss_part = wordnet.gloss_part
self.lex_filenum = wordnet.lex_filenum

def test_split_pointer_part(line):
expected = '13797906 23 n 04 flood 0 inundation 0 deluge 0 torrent 0 005',' 13796604 n 0000 + 00603894 a 0401 + 00753137 v 0302 + 01527311 v 0203 + 02361703 v 0101 | an overwhelming number or amount; "a flood of requests"; "a torrent of abuse"'
real = self.wn.split_pointer_part()
self.assertEqual(real, expected)

if __name__ == '__main__':
unittest.main()
raw_input("Press <ENTER> to exit")

这目前不起作用,我知道我没有以正确的方式做,但找不到任何具体的帮助来解决这个问题!

最佳答案

这是一个可以帮助您入门的可运行示例:

import unittest
class Wordnet():

def __init__(self):
# self.graph = Graph()
self.before_at = ''
self.after_at = ''
self.word_part = ''
self.gloss_part = ''
self.lex_filenum = ''

def process_file(self):
self.file = open("testing_line.txt", "r")
return self.file

def line_for_loop(self, file):
for line in file:
self.split_pointer_part(line)
self.split_word_part(line)
self.split_gloss_part(line)
self.process_lex_filenum(self.word_part)

def split_pointer_part(self, line):
self.before_at, self.after_at = line.split('@', 1)
return self.before_at, self.after_at

def split_word_part(self, line):
self.word_part = line.split()
return self.word_part

def split_gloss_part(self, line):
self.gloss_part = line.strip().split('|')
return self.gloss_part

def process_lex_filenum(self, word_part):
self.lex_filenum = word_part[1]
return self.lex_filenum


class WordnetTestCase(unittest.TestCase):
def setUp(self):
self.wn = Wordnet()

def test_split_pointer_part(self):
line = 'foo@bar'
result = self.wn.split_pointer_part(line)
answer = ('foo', 'bar')
self.assertEqual(len(result), 2)
for r, a in zip(result, answer):
self.assertEqual(r, a)

if __name__ == '__main__':
unittest.main()

关于python - 为具有全局变量的方法创建单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17405503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com