Найти - Пользователи
Полная версия: Проверка файла csv с переменой
Начало » Python для новичков » Проверка файла csv с переменой
1
dron4ik86
Привет всем,
Я хочу сделать проверку данных которые находятся в csv и переменой. Я использую для этого unittest. Проверка получается, но есть проблема что если данные не совпадают я не могу знать где проблема, а именно в csv или в переменой. Как можно получить информацию в каком месте есть ошибка?

 tb_row = [u'120 dev 15.61', u'126 kor 12.96', u'128 itsw 20.58'] 
        for i, x in enumerate(tb_row):
            tb_row[i] = x
        rows = []
        with open('/home/andrey/Desktop/test.csv', 'rb', ) as csvfile:  
            the_file = csv.reader(csvfile, delimiter=',')
            for row in the_file:
                rows.extend([x.decode('utf8') for x in row])
        q = u' '.join(tb_row).split()
        w = u' '.join(rows).split()
        for index, value in enumerate(q):  # comparing csv with web
            self.assertEqual(w[index], value)
py.user.next
Тесты должны быть простыми настолько, чтобы их самих не нужно было тестировать. То есть максимальная простота, где ошибки не возникнет. А ты тут что-то наворотил.
dron4ik86
py.user.next
Тесты должны быть простыми настолько, чтобы их самих не нужно было тестировать. То есть максимальная простота, где ошибки не возникнет. А ты тут что-то наворотил.
А что я здесь натворил не так?
py.user.next
dron4ik86
А что я здесь натворил не так?
Ну, ты толи сложный тест написал, толи используешь unittest не по назначению. Если второе, то ты делаешь не то. Если первое, то тест надо упростить.

dron4ik86
Я использую для этого unittest.
В общем, вопрос - с чего ты решил использовать unittest?
dron4ik86
py.user.next
Использую unittest для авто тестов Selenium+Python. Я получаю элементы и сравниваю их с csv, не вижу здесь какой то проблемы, просто хочу знать от, куда приходит ошибка, с сайта или с файла
py.user.next
dron4ik86
Я получаю элементы и сравниваю их с csv, не вижу здесь какой то проблемы
Почитай что-нибудь по тестированию, потому что это слишком сложные тесты, в которых запросто может быть какая-нибудь ошибка, из-за которой тест будет выдавать неправильный результат (неправильно тестировать) и ты даже об этом не узнаешь. Будешь думать, что он тестирует, а он нифига не тестирует. Если для теста нужно писать тест, то это плохой тест.
izekia
первые три строки ничего полезного не делают:
 tb_row = [u'120 dev 15.61', u'126 kor 12.96', u'128 itsw 20.58']
tb_row_copy = list(tb_row)
for i, x in enumerate(tb_row):
    tb_row[i] = x
if(tb_row == tb_row_copy):
    print('useless')

почему Вы csv в бинарном пытаетесь читать? прикрепите пример файла

вместо:
 u' '.join(rows).split()
лучше:
 chain.from_iterable(x.split() for x in tb_row])
может чуть больше кода, но на мой взгляд более внятно и оптимально при большом количестве строк


и именно здесь тестирование проще всего выполнить доктестом - меньше кода и более наглядно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB