I have a program (file1.py) with functions and I want to test these functions from the file test1.py. When I import the first function I don't know why the terminal tells me that I need to introduce the arguments that are required when I run file1.py. Is beyond my understanding why this happens because as far as I know from test1.py I am taking the first function and not the complete file1.py.
file1.py (until the first function)
import os
import argparse
import pandas as pd
import numpy as np
# Enter the path/file names
parser = argparse.ArgumentParser()
parser.add_argument('--vcf1', type=str, required=True)
parser.add_argument('--vcf2', type=str, required=True)
args = parser.parse_args()
NAME_FILE_1 = args.vcf1
NAME_FILE_2 = args.vcf2
def load_sample (Name_file):
'''
Take the header of the body of the CSV file
'''
with open(Name_file, 'r') as f:
for line in f:
if line.startswith('#') and len(line)>2 and line[1] != '#':
columns = line[1:-1].split('\t')
data = pd.read_csv(Name_file, comment='#', delimiter='\t', names=columns)
break
return data
# The data of the VCF is here
dataA = load_sample (NAME_FILE_1)
dataB = load_sample (NAME_FILE_2)
And my test1.py
import os
import pandas as pd
import numpy as np
from VCF_matcher.app.run import load_sample
NAME_FILE_1 = "./test_sample.vcf"
# FIRST TEST
def test_load_sample():
'''Verify all rows of the body of the vcf file is taken'''
data_to_test = load_sample (NAME_FILE_1)
assert len(data_to_test) == 10425
The output:
======================================================== ERRORS ========================================================
_________________________________________ ERROR collecting test_vcf_matcher.py _________________________________________
test_vcf_matcher.py:13: in <module>
from VCF_matcher.app.run import load_sample
../app/run.py:26: in <module>
args = parser.parse_args()
../../../opt/anaconda3/lib/python3.8/argparse.py:1768: in parse_args
args, argv = self.parse_known_args(args, namespace)
../../../opt/anaconda3/lib/python3.8/argparse.py:1800: in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
../../../opt/anaconda3/lib/python3.8/argparse.py:2034: in _parse_known_args
self.error(_('the following arguments are required: %s') %
../../../opt/anaconda3/lib/python3.8/argparse.py:2521: in error
self.exit(2, _('%(prog)s: error: %(message)s\n') % args)
../../../opt/anaconda3/lib/python3.8/argparse.py:2508: in exit
_sys.exit(status)
E SystemExit: 2
--------------------------------------------------- Captured stderr ----------------------------------------------------
usage: pytest [-h] --vcf1 VCF1 --vcf2 VCF2
pytest: error: the following arguments are required: --vcf1, --vcf2
=============================================== short test summary info ================================================
ERROR test_vcf_matcher.py - SystemExit: 2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!