I asked this question about how to write a pytest to check output in stdout and got a solution. Now I need to write a test case, to check if the contents are written to the file and that the contents are written as expected
eg:
def writetoafile():
file = open("output.txt",w)
file.write("hello\n")
file.write("world\n")
file.close()
now a pytest function to check if it written:
def test_writeToFile():
file = open("ouput.txt",'r')
expected = "hello\nworld\n"
assert expected==file.read()
while this seems to work, I do not think this is ideal, especially hard-coding. how are these kind of test functions of writing to a file usually written?
解决方案
There is the tmpdir fixture which will create you a per-test temporary directory. So a test would look something like this:
def writetoafile(fname):
with open(fname, 'w') as fp:
fp.write('Hello\n')
def test_writetofile(tmpdir):
file = tmpdir.join('output.txt')
writetoafile(file.strpath) # or use str(file)
assert file.read() == 'Hello\n'
Here you're refactoring the code to not be hardcoded either, which is a prime example of how testing your code makes you design it better.