Creating unit tests for methods with global variables

I have a program that uses a number of global variables, and I was hoping to write some unit tests for some of the methods in the program.

I was new to python when I started writing code, and I understand that I had to test all this time. Some of the program methods are as follows:

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) 

What scares me is how the variables pass the test class and how I'm going to write test methods. So far this is what I have:

 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") 

This does not work at the moment, and I know that I am not doing it right, but simply cannot find any specific help for this problem!

+4
source share
1 answer

Here is an example run to run:

 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() 
+3
source

Source: https://habr.com/ru/post/1489104/


All Articles