繁体   English   中英

我在 python 中创建单元测试时遇到问题。谁能告诉我我的错误是什么?

[英]I am having problem creating a unit test in python. can anyone let me know what's my mistake?

有人帮我解决这个问题。 我能够运行 cars.py 文件,但出于某种原因,我不知道如何使用从 csv 文件中读取的值正确地进行单元测试。

CSV 文件内容:

Car Name,Price
Toyota Camry,28000
Lexus,35000
Range Rover,75000
Volswagen Beetle,32000
Audi A5,55000
Jeep,52000
Toyota RAV4,48000
Nissan Ultima,29500
Aston Martin,85000

cars.py 内容

import csv
import math
def expensive_Car(expensiveCar):
    with open('Cars.csv', "r") as csvfile:
        reader = csv.reader(csvfile, delimiter = ",")
        header = next(reader)
        line_count = 0
        expensiveCarCompany= 0

        for row in reader:
            if line_count == 0:
                line_count+=1
            
            else:
                line_count+=1
                     
            #Finding the most expensive car
            if int(row[1]) > expensiveCar:
                expensiveCarCompany, expensiveCar = row[0], int(row[1]) 
           
    print(f'Expensive car company: {expensiveCarCompany} which is ${expensiveCar}.')    
    return expensiveCarCompany, expensiveCar 

def cheapest_Car(cheapestCar):
    with open('Cars.csv', "r") as csvfile:
        reader = csv.reader(csvfile, delimiter = ",")
        header = next(reader)
    
        line_count = 0
        cheapestCarCompany = 0
        for row in reader:
            if line_count == 0:
                line_count+=1
            
            else:
                line_count+=1
            
            #Finding the most cheapest car
            if int(row[1]) < cheapestCar:
                cheapestCarCompany, cheapestCar = row[0], int(row[1])
     
    print(f'Cheapest car company: {cheapestCarCompany} which is ${cheapestCar}.')
    return cheapestCarCompany, cheapestCar

if __name__ == "__main__":
    cheapCar = cheapest_Car(math.inf)
    priceyCar = expensive_Car(-math.inf)

##单元测试内容##

import unittest
import cars
class test_carPrice(unittest.TestCase):
    
    def test_ExpensiveCar(self):
        result = cars.expensive_Car(self)
        self.assertEquals(result, 85000)
    
    def test_CheapestCar(self):
        self.assertIs(cars.cheapest_Car, 28000)

if __name__ == '__main__':
    unittest.main()

这是第一次学习 python,我不知道我做错了什么,但它一直向我展示这些错误。

##Error message from cars.py :##
'>' not supported between instances of 'int' and 'test_carPrice'

##error message from unittest##
<function cheapest_Car at 0x000002013B511240> is not 28000
in test_CheapestCar self.assertIs(cars.cheapest_Car, 28000)



    


您的方法不需要参数,因为该方法是寻找最便宜或更昂贵的汽车的方法,而不是您提供给该方法的东西。

在您的测试中,您应该使用math.inf对它们进行相同的调用,然后调用该方法,因为cars.cheapest_Car本身就是 function,您不能将它与 int 进行比较

测试成为

def test_ExpensiveCar(self):
    company, value = expensive_Car()
    self.assertEquals(value, 85000)

def test_CheapestCar(self):
    company, value = cheapest_Car()
    self.assertEquals(value, 28000)

有了更好的命名,你就有了

def expensive_car():
    with open('Cars.csv', "r") as csvfile:
        reader = csv.reader(csvfile, delimiter=",")
        next(reader)
        expensive_car_company = 0
        expensive_car = -math.inf

        for row in reader:
            if int(row[1]) > expensive_car:
                expensive_car_company, expensive_car = row[0], int(row[1])

    print(f'Expensive car company: {expensive_car_company} which is ${expensive_car}.')
    return expensive_car_company, expensive_car

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM