动态和尝试/捕捉

时间:2018-08-03 13:18:23

标签: c# dynamic try-catch

我有一些代码,我正在编写单元测试。 因此,我需要检查是否存在serviceResult.Result.LOCATION_COUNT以及其余3个字段。我需要确保它们都不存在。 ServiceResult.Result是动态类型。如果其中一些存在,那么我需要通过测试失败。

try
        {
            Assert.IsNull(serviceResult.Result.LOCATION_AMOUNT);
        }
        catch
        {
            try
            {
                Assert.IsNull(serviceResult.Result.OGM_AMOUNT);
            }
            catch
            {
                try
                {
                    Assert.IsNull(serviceResult.Result.VAT_AMOUNT);
                }
                catch
                {
                    try
                    {
                        Assert.IsNull(serviceResult.Result.TOTAL_AMOUNT);
                    }
                    catch
                    {
                        Assert.AreEqual(0, 0);
                    }
                }
            }
        }
        Assert.Fail();

此代码看起来不尴尬吗?也许我可以改善一些东西?

1 个答案:

答案 0 :(得分:1)

使用Assert.Throws,即特定表达式引发异常的断言,如下所示:

timeout = 60
maxtime = time.time() + timeout
result = None
while result is "SUCCESS":
    try:
        # connect
        result = driver.find_element_by_xpath('//td[contains,"dmatarget14.hpeswlab.net"] and td[contains,"Success"]/ancestor::tr')
        time.sleep(5)
    except:
        if time.time() > maxtime:
            raise Exception