CMS 20190919から4ユニットテスト、ペア

このジョブは、参照してください必要があります。https://edu.cnblogs.com/campus/nenu/2019fall/homework/7629

gitのリンクします。https://e.coding.net/kangzhe/size.git

ツイニングパートナー:冬の澤

各機能のための請求項1に、最初のテストは、次に符号化機能が与えられます。テストケースは、テストを完了するために、機能要件の指標として考えられますのでご注意ください。(40点)

機能と2つのテストケースの機能:

 3つのテストケースの特長:

 TDDテストフレームワークのテストケース:

 すべてのテストケースの必要なブログのレポートで2事実(またはテストケースに合格するためにコードを変更しない)を報告し、プロセス全体を渡すために失敗し、収穫。最初のフレームに加えて、使い捨てテストパスの存在を確実にし、また、ワンタイムレポートを介して、機能を達成するために、このコードのような大部分を与えます。その双晶のパートナーを示し、仕事に提出ブログで2人の学生投稿者;ジョブ内の別の参照このブログを、その双晶パートナーを示しています。(40点)

 

テストケース2

次のような結果の実装は次のようになります。

 

 

 失敗:出力に次の行ジョブの要件に合わせて、答えは解答を入力するために、同じ行に機能するはずですが、実行には?。

コードを変更します。

 

印刷" "、終了= "" 

 

結果の実装後にコードを変更します。

 

3テストケース

 

 次のような結果の実装は次のようになります。

テストケース4

次のような結果の実装は次のようになります。

 

 

 

キーコードの4つの以上の試験部分:

def function1():
    right = 0
    i = 0

    while i in range(20):
        i = i + 1
        equation = create_formula()
        re_equation = reverse_polish(equation)
        result = calculate(re_equation)
        answer0 = result
        if result is False or result is None or len(str(result)) > 12:
            i = i - 1
            continue
        str_equation = " ".join('%s' % id for id in equation)
        print(str_equation + "=")
        print("?", end="")
        answer = float(input())
        if abs(result - int(result)) < 1.0e-16:
            result = int(result)
        if answer == answer0:
            print("答对啦,你真是个天才!")
            right = right + 1
        else:
            print("再想想吧,答案似乎是" + repr(result) + "喔!")
    print("你一共答对" + repr(right) + "道题,共20道题。")

测试用例5

执行效果如下:

 

 

 测试用例6:

执行效果如下:

 

测试用例7

 

 执行效果如下:

 

 

 fail:虽然测试用例7的可以完成执行,但是对于输出还有点欠缺,在文本中的表达式后面需要有一个不等式,但是执行以后并没有出现。

修改代码:

equation.append('=\t\t')

修改代码后运行效果:

以上3个测试用例的部分代码:

def function3(n):
    n = int(n)
    i = 0

    while i in range(n):
        i = i+1
        equation = create_formula()
        re_equation = reverse_polish(equation)
        result = calculate(re_equation)
        if result is False or result is None or len(str(result)) > 12:
            i = i-1
            continue
        if i is 1:
            if os.path.exists('result.txt'):
                os.remove('result.txt')
        write_file(equation, result)

 测试用例8:

执行效果如下:

生成表达式部分代码:

def create_formula():
    equation = []

    for i in range(3):
        equation.append(random.randint(0, 10))
        equation.append(operator[random.randint(0, 3)])
    equation.append(random.randint(0, 10))
    p = random.randint(1, 5)
    if p is 1:
        equation.insert(0, "(")
        equation.insert(4, ")")
    elif p is 2:
        equation.insert(0, "(")
        equation.insert(6, ")")
    elif p is 3:
        equation.insert(2, "(")
        equation.insert(6, ")")
    elif p is 4:
        equation.insert(2, "(")
        equation.append(")")
    elif p is 5:
        equation.insert(4, "(")
        equation.append(")")
    return equation

 

 

生成速记公式测试代码:

    def test01_create_formula(self):
        print("create_formula函数单元测试开始:")
        self.assertIsNotNone(create_formula())
        print("OK")
        print("create_formula函数单元测试结束。\n")

测试用例9:

执行效果如下:

 

前缀表达式转成后缀表达式部分代码:

 

def reverse_polish(equation):
    result = []
    c = []
    slist = [i for i in equation]

    for item in slist:
        if item in range(0, 100):
            result.append(item)
        elif not c and item in operator_dic.keys():
            c.append(item)
            continue
        elif c and item in operator_dic.keys():
            for x in range(c.__len__()):
                z = c[-1]
                temp = operator_dic[z] if z in operator_dic else cal1[z]
                if temp >= operator_dic[item]:
                    result.append(c.pop())
                else:
                    c.append(item)
                    break
            if not c:
                c.append(item)
        elif item is ")":
            for x in range(c.__len__()):
                if c[-1] == "(":
                    c.pop()
                    break
                else:
                    result.append(c.pop())
        elif item is "(":
            c.append(item)
    for x in range(c.__len__()):
        result.append(c.pop())
    return result

 

前缀转后缀表达式测试代码:

    def test02_reverse_polish(self):
        eq = []
        print("reverse_polish函数单元测试开始:")
        equation = input("输入一个四则运算(括号请使用英文版的括号):")
        _eq_ans = input("输入正确的后缀表达式:")
        # 输入的表达式是str类型,该函数处理的是含有整型和字符型的list类型
        list(equation)
        for temp in equation:
            if '0' <= temp <= '9':
                eq.append(int(temp))
            else:
                eq.append(temp)
        re_equation = reverse_polish(eq)
        str_equation = "".join('%s' % id for id in re_equation)
        self.assertEqual(_eq_ans, str_equation)
        print("OK")
        print("reverse_polish函数单元测试结束。\n")

 

测试用例10:

执行效果如下:

 

 

 

 

 计算后缀表达式部分代码:

def calculate(re_equation):
    stack = Stack()
    sumEnd = 0

    if len(re_equation) is 0:
        return sumEnd
    for i in re_equation:
        if i in range(0, 100):
            stack.push(float(i))
        elif '+' is i:
            a = stack.pop()
            b = stack.pop()
            stack.push(b + a)
        elif '-' is i:
            a = stack.pop()
            b = stack.pop()
            stack.push(b - a)
        elif '*' is i:
            a = stack.pop()
            b = stack.pop()
            stack.push(b * a)
        elif '÷' is i:
            a = stack.pop()
            b = stack.pop()
            if a == 0:
                return False
            else:
                stack.push(b / a)
    return stack.pop()

计算后缀表达式测试代码:

    def test03_calculate(self):
        eq = []
        print("calculate函数单元测试开始:")
        equation = input("输入一个可计算的后缀表达式:")
        _eq_ans = input("输入该表达式的正确结果:")
        list(equation)
        for temp in equation:
            if '0' <= temp <= '9':
                eq.append(int(temp))
            else:
                eq.append(temp)
        result = calculate(eq)
        self.assertEqual(float(_eq_ans), result)
        print("OK")
        print("calculate函数单元测试结束。\n")

 

おすすめ

転載: www.cnblogs.com/kangzhe-nenu/p/11579150.html