2013-03-22 4 views
0
def c1(): 
     logfile = open("D:\myfile.txt", 'r') 
     for num1, line in enumerate(logfile): 
       if "request=100" in line: 
        print num1 
        return True 
     return False 

    def c2(): 
     logfile = open("D:\myfile.txt", 'r') 
     for num2, line in enumerate(logfile): 
       if "response=200" in line: 
        print num2 
        return True 
     return False  

    if c1() == True and c2() == True: 
     print "Test Case Passed" 
    else: 
     print "Test Case Failed" 

В приведенном выше коде проверка номера строки, чтобы запрос = 100 и ответ = 200, попадали в одну строку. Это мне нужно.Чтобы найти номер строки строки, найденной в Python

Кроме того, я хочу, чтобы распечатать результат как "Pass" только при соблюдении следующих условий ...

- both c1 and c2 are True 
- both "request=100" and "response=200" should fall in same line 
- if any other line also consist of "request=100" and "response=200" then that also should be counted 

Результат "Сбой", если:

- if any one line which consists of "request=200" and "response=200" 
- if any one line which consists of "request=100" and "response=100" 
- or any case in which no line should have apart from "request=100" and "response=200" 

Рассмотрим «MyFile "имеет следующие данные:

request=100 XXXXXXXXXXXXXXXXXXXXXXXXXXXX \n 
XXXXXXXXXXXXXXXX response=200 XXXXXXXXX \n 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \n 
XXXX request=100 XXXXX response=200 XXXXXXXXXXX \n 
XXXXXXX request=200 XXXXXX response=100 XXXXXXX \n 
XXXXXXXX request=100 XXXX response=100"   \n 

В вышеуказанном файле результат Fail, поскольку запрос и ответ имеют разные значения va кроме обязательных значений. Только строка 5 имеет правильные значения, поэтому результат не выполнен.

ответ

0

Если я вас правильно понял, вы должны поставить оба условия в одном цикле, и держать цикл, пока не упретесь в конец строки, или столкнуться с другой линии с условием:

def are_they_on_the_same_line(): 
    logfile = open("D:\myfile.txt", 'r') 
    intermediate_result = False 
    for num1, line in enumerate(logfile): 
      if "request=100" in line and "response=200": 
       if intermediate_result == True: 
        return False 
       intermediate_result = True 
    return intermediate_result 

Есть и другие условия в котором это не удается, за исключением условий отказа, о которых вы упомянули. Но эти два упоминания не являются взаимоисключающими.

Редактировать: Нет, подождите, это неправильно, судя по примеру. Я не могу понять ваши условия. Может быть, это поможет вам получить представление, если нет, пожалуйста, проясните условия с помощью другого примера.