pythonのsetUp,setUpClass,およびsetUpModuleの違い

123644 ワード

デポジットプラスマイナス乗除関数
class MathOperation:
    """
          
    """
    def __init__(self,first_num,second_num):
        self.first_num,self.second_num = first_num,second_num

    def add(self):
        return self.first_num + self.second_num

    def minus(self):
        return self.first_num - self.second_num

    def multiply(self):
        return self.first_num * self.second_num

    def divide(self):
        try:
            return round(self.first_num/self.second_num,2)
        except ZeroDivisionError:
            return "   0  "

1.setUp各テストケースが実行される前に実行される
#      
import unittest
import inspect

#        
from lin.math_operation import MathOperation as MathOper


class TestMulti(unittest.TestCase):
    """
          
    """
    def setUp(self):
        """
               
                     
        :return:
        """
        print("{:=^40s}".format("        "))
        self.file_name = "record_run_result1.txt"
        self.file = open(self.file_name,mode="a",encoding="utf-8")
        self.file.write("{:=^40s}
"
.format(" ")) def tearDown(self): """ :return: """ print("{:=^40s}
"
.format(" ")) self.file.write("{:=^40s}

"
.format(" ")) self.file.close() def test_two_neg_multi(self): """ 1. :return: """ # # # file_name = "record_run_result.txt" # print(" [{}] ".format(file_name)) # file = open(file_name,mode="a",encoding="utf-8") # # self.file.write("{:=^40s}
".format(" "))
# self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,-4).multiply() # expect_result = 12 # msg = " " try: self.assertEqual(expect_result,real_result,msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg,"Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) # finally: # # ,(" [{}] ".format(file_name)) # file.write("{:=^40s}

".format(" "))
# file.close() def test_neg_pos_multi(self): """ 2. :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,4).multiply() # expect_result = -12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) def test_two_pos_multi(self): """ :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(3,4).multiply() # expect_result = 12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) def test_zero_multi(self): """ 4. 0 :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(0,0).multiply() # expect_result = 0 # msg=" 0 " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) class TestDivide(unittest.TestCase): """ """ def setUp(self): """ :return: """ self.file_name = "record_run_result1.txt" self.file = open(self.file_name,mode="a",encoding="utf-8") self.file.write("{:=^40s}
"
.format(" ")) def tearDown(self): """ :return: """ self.file.write("{:=^40s}

"
.format(" ")) self.file.close() def test_two_neg_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) # real_result = MathOper(8,4).divide() # except_result = 2 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: self.file.write("{}, :{},
{}
"
.format(msg,"Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_neg_pos_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(8,-2).divide() except_result = -4 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: self.file.write("{}, :{}
, {}
"
.format(msg,"Fail",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_two_pos_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(-8,-2).divide() except_result = 4 msg = " " try: self.assertEqual(except_result,real_result,msg) except AssertionError as e: self.file.write("{}, :{}
{}
"
.format(msg,"Fali",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_zero_divi(self): """ 0 :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(8,0).divide() except_result = " 0 " msg=" 0 " try: self.assertEqual(except_result,real_result,msg) except AssertionError as e: self.file.write("{}, :{}
{}
"
.format(msg,"Fail",e)) else: self.file.write("{}, :{}
"
.format(msg,"Pass")) if __name__ == '__main__': unittest.main()

2.setUpClassは各テストクラスが実行される前に実行する
#      
import unittest
import inspect

#        
from lin.math_operation import MathOperation as MathOper


class TestMulti(unittest.TestCase):
    """
          
    """
    @classmethod
    def setUpClass(cls):
        """
                    
        :return:
        """
        cls.file_name = "record_run_result1.txt"
        cls.file = open(cls.file_name,mode="a",encoding="utf-8")
        cls.file.write("{:=^40s}
"
.format(" ")) # def setUp(self): # """ # # # :return: # """ # print("{:=^40s}".format(" ")) # self.file_name = "record_run_result1.txt" # self.file = open(self.file_name,mode="a",encoding="utf-8") # self.file.write("{:=^40s}
".format(" "))
@classmethod def tearDownClass(cls): """ :return: """ cls.file.write("{:=^40s}

"
.format(" ")) cls.file.close() # def tearDown(self): # """ # # :return: # """ # print("{:=^40s}
".format(" "))
# self.file.write("{:=^40s}

".format(" "))
# self.file.close() def test_two_neg_multi(self): """ 1. :return: """ # # # file_name = "record_run_result.txt" # print(" [{}] ".format(file_name)) # file = open(file_name,mode="a",encoding="utf-8") # # self.file.write("{:=^40s}
".format(" "))
# self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,-4).multiply() # expect_result = 12 # msg = " " try: self.assertEqual(expect_result,real_result,msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg,"Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) # finally: # # ,(" [{}] ".format(file_name)) # file.write("{:=^40s}

".format(" "))
# file.close() def test_neg_pos_multi(self): """ 2. :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,4).multiply() # expect_result = -12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) def test_two_pos_multi(self): """ :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(3,4).multiply() # expect_result = 12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) def test_zero_multi(self): """ 4. 0 :return: """ # self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(0,0).multiply() # expect_result = 0 # msg=" 0 " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise self.file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: self.file.write("{}, :{}
"
.format(msg, "Pass")) class TestDivide(unittest.TestCase): """ """ @classmethod def setUpClass(cls): """ :return: """ cls.file_name = "record_run_result1.txt" cls.file = open(cls.file_name, mode="a", encoding="utf-8") cls.file.write("{:=^40s}
"
.format(" ")) @classmethod def tearDownClass(cls): """ :return: """ cls.file.write("{:=^40s}

"
.format(" ")) cls.file.close() # def setUp(self): # """ # # # :return: # """ # self.file_name = "record_run_result1.txt" # self.file = open(self.file_name,mode="a",encoding="utf-8") # self.file.write("{:=^40s}
".format(" "))
# # def tearDown(self): # """ # # :return: # """ # self.file.write("{:=^40s}

".format(" "))
# self.file.close() def test_two_neg_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) # real_result = MathOper(8,4).divide() # except_result = 2 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: self.file.write("{}, :{},
{}
"
.format(msg,"Fail",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_neg_pos_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(8,-2).divide() except_result = -4 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: self.file.write("{}, :{}
, {}
"
.format(msg,"Fail",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_two_pos_divi(self): """ :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(-8,-2).divide() except_result = -4 msg = " " try: self.assertEqual(except_result,real_result,msg) except AssertionError as e: print(e) self.file.write("{}, :{}
{}
"
.format(msg,"Fali",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) def test_zero_divi(self): """ 0 :return: """ self.file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(8,0).divide() except_result = " 0 " msg=" 0 " try: self.assertEqual(except_result,real_result,msg) except AssertionError as e: self.file.write("{}, :{}
{}
"
.format(msg,"Fail",e)) raise e else: self.file.write("{}, :{}
"
.format(msg,"Pass")) if __name__ == '__main__': unittest.main()

3.setuUpMidule各テストクラスが開いてファイルを閉じる問題を解決するすべてのテストクラスは呼び出す前に一度実行され、関数名は固定書き方で、unittestフレームワークによって自動的に識別される
#        ,         
#    def  setUpModule def tearDownModule  


#      
import unittest
import inspect

#        
from lin.math_operation import MathOperation as MathOper


def setUpModule():
    """
                    
                     ,        ,  unittest      
    :return:
    """
    global file_name
    global file
    file_name = "record_run_result1.txt"
    file = open(file_name,mode="a",encoding="utf-8")
    file.write("{:=^40s}
"
.format(" ")) def tearDownModule(): file.write("{:=^40s}

"
.format(" ")) file.close() class TestMulti(unittest.TestCase): """ """ def test_two_neg_multi(self): """ 1. :return: """ # file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,-4).multiply() # expect_result = 12 # msg = " " try: self.assertEqual(expect_result,real_result,msg=msg) except AssertionError as e: print(" {}".format(e)) # raise file.write("{}, :{}
:{}
"
.format(msg,"Fail")) raise e else: file.write("{}, :{}
"
.format(msg,"Pass")) def test_neg_pos_multi(self): """ 2. :return: """ # file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(-3,4).multiply() # expect_result = -12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: file.write("{}, :{}
"
.format(msg, "Pass")) def test_two_pos_multi(self): """ :return: """ # file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(3,4).multiply() # expect_result = 12 # msg=" " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: file.write("{}, :{}
"
.format(msg, "Pass")) def test_zero_multi(self): """ 4. 0 :return: """ # file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) print("
Running Test Method:{}"
.format(inspect.stack()[0][3])) # real_result = MathOper(0,0).multiply() # expect_result = 0 # msg=" 0 " try: self.assertEqual(expect_result, real_result, msg=msg) except AssertionError as e: print(" {}".format(e)) # raise file.write("{}, :{}
:{}
"
.format(msg, "Fail")) raise e else: file.write("{}, :{}
"
.format(msg, "Pass")) class TestDivide(unittest.TestCase): """ """ def test_two_neg_divi(self): """ :return: """ file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) # real_result = MathOper(8,4).divide() # except_result = 2 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: file.write("{}, :{},
{}
"
.format(msg,"Fail",e)) raise e else: file.write("{}, :{}
"
.format(msg,"Pass")) def test_neg_pos_divi(self): """ :return: """ file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(8,-2).divide() except_result = -4 msg = " " try: self.assertEqual(except_result,real_result,msg=msg) except AssertionError as e: file.write("{}, :{}
, {}
"
.format(msg,"Fail",e)) raise e else: file.write("{}, :{}
"
.format(msg,"Pass")) def test_two_pos_divi(self): """ :return: """ file.write("Running Test Method:{}
"
.format(inspect.stack()[0][3])) real_result = MathOper(-8,-2).divide() except_result = 4 msg = " " try: self.assertEqual(except_result,real_result,msg) except AssertionError as e: print(e) file.write("{}, :{}
{}
"
.format(msg,"Fali",e)) raise e else: file.write("{}, :{}
"
.format(msg,"Pass")) @unittest.skip("test_zero_divi") #