Beispiel #1
0
class test_TotalPackageBatchForecast(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_TotalPackageBatchForecast_001(self):
        '''总包批次预报:总包批次预报:请求参数正确,预报成功'''
        r = self.obj.post(row=76)
        isIn(self, r=r, row=76)

    def test_TotalPackageBatchForecast_002(self):
        '''总包批次预报:预报渠道未配置,预报失败'''
        r = self.obj.post(row=77)
        isIn(self, r=r, row=77)

    def test_TotalPackageBatchForecast_003(self):
        '''总包批次预报:必填参数为空,预报失败'''
        r = self.obj.post(row=78)
        isIn(self, r=r, row=78)

    def test_TotalPackageBatchForecast_004(self):
        '''总包批次预报:校验码不正确,预报失败'''
        r = self.obj.post(row=79)
        isIn(self, r=r, row=79)

    def test_TotalPackageBatchForecast_005(self):
        '''总包批次预报:客户不存在,预报失败'''
        r = self.obj.post(row=80)
        isIn(self, r=r, row=80)
Beispiel #2
0
class test_PacketOrder(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_PacketOrder_001(self):
        '''预报订单:actionCode为Submit提交,请求参数正确,订单预报到CMS成功'''

        r = self.obj.post(row=1)
        isIn(self, r=r, row=1)
        print(r.status_code)

    def test_PacketOrder_002(self):
        '''预报订单:actionCode为CheckIn签入,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=2)
        isIn(self, r=r, row=2)

    def test_PacketOrder_003(self):
        '''预报订单:actionCode为CheckOut迁出,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=3)
        isIn(self, r=r, row=3)

    def test_PacketOrder_004(self):
        '''预报订单:actionCode为TotalScan总单扫描,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=4)
        isIn(self, r=r, row=4)

    def test_PacketOrder_005(self):
        '''预报订单:TotalCompleted总单批次预报完成,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=5)
        isIn(self, r=r, row=5)

    def test_PacketOrder_006(self):
        '''预报订单:Airline 航线提交,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=6)
        isIn(self, r=r, row=6)

    def test_PacketOrder_007(self):
        '''预报订单:AirlineCompleted航线预报完成,请求参数正确,订单预报到CMS成功'''
        r = self.obj.post(row=7)
        isIn(self, r=r, row=7)

    def test_PacketOrder_008(self):
        '''预报订单:actionCode必填字段为空 ,订单预报到CMS失败'''
        r = self.obj.post(row=8)
        isIn(self, r=r, row=8)

    def test_PacketOrder_009(self):
        '''预报订单:channelCode必填字段为空,订单预报到CMS失败'''
        r = self.obj.post(row=9)
        isIn(self, r=r, row=9)

    def test_PacketOrder_010(self):
        '''预报订单:actionCode与channelCode不匹配,订单预报到CMS失败'''
        r = self.obj.post(row=10)
        isIn(self, r=r, row=10)
Beispiel #3
0
class test_GetTotalpackageBags(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetTotalpackageBags_001(self):
        '''根据总包获取袋子的简单数据:请求参数正确,获根据总包获取袋子的简单数据成功'''
        r = self.obj.get(row=23)
        isIn(self, r=r, row=23)

    def test_GetTotalpackageBags_002(self):
        '''根据总包获取袋子的简单数据:数据来源不匹配,根据总包获取袋子的简单数据失败'''
        r = self.obj.get(row=24)
        isIn(self, r=r, row=24)
class test_ReceiveResult(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_ReceiveResult_001(self):
        '''处理预报结果:请求参数正确,返回结果成功'''
        r = self.obj.post(row=51)
        isIn(self, r=r, row=51)

    def test_ReceiveResult_002(self):
        '''处理预报结果:请求参数不正确,返回结果失败'''
        r = self.obj.post(row=52)
        isIn(self, r=r, row=52)
class test_GetOrder(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetOrder_001(self):
        '''获取订单信息:请求参数正确,获取订单信息成功'''
        r = self.obj.get(row=61)
        isIn(self, r=r, row=61)

    def test_GetOrder_002(self):
        '''获取订单信息:请求参数不正确,获取订单信息失败'''
        r = self.obj.get(row=62)
        isIn(self, r=r, row=62)
Beispiel #6
0
class test_GetForecastConfiguration(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetForecastConfiguration_001(self):
        '''获取TMS的渠道配置信息:请求参数正确,获取TMS的渠道配置信息成功'''
        r = self.obj.get(row=25)
        isIn(self, r=r, row=25)

    def test_GetForecastConfiguration_002(self):
        '''获取TMS的渠道配置信息:请求参数不正确,获取TMS的渠道配置信息失败'''
        r = self.obj.get(row=26)
        isIn(self, r=r, row=26)
Beispiel #7
0
class test_GetMawbNumber(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetMawbNumber_001(self):
        '''根据总包获取航班信息:请求参数正确,根据总包获取航班信息成功'''
        r = self.obj.get(row=53)
        isIn(self, r=r, row=53)

    def test_GetMawbNumber_002(self):
        '''根据总包获取航班信息:数据来源不匹配,根据总包获取航班信息失败'''
        r = self.obj.get(row=54)
        isIn(self, r=r, row=54)
class test_GetForecastConfigurationAll(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetForecastConfigurationAll_001(self):
        '''获取TMS配置的所有预报渠道:请求参数正确,获取TMS配置的所有预报渠道成功'''
        r = self.obj.get(row=22)
        isIn(self, r=r, row=22)
Beispiel #9
0
class test_GetForecastStatus(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetForecastStatus_001(self):
        '''获取预报状态:status状态值为1'''
        r = self.obj.get(row=55)
        isIn(self, r=r, row=55)

    def test_GetForecastStatus_002(self):
        '''获取预报状态:status状态值为20'''
        r = self.obj.get(row=56)
        isIn(self, r=r, row=56)

    def test_GetForecastStatus_003(self):
        '''获取预报状态:status状态值为2'''
        r = self.obj.get(row=57)
        isIn(self, r=r, row=57)
class test_GetKeywordInterceptStatus(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetKeywordInterceptStatus_001(self):
        '''获取关键词拦截状态:请求参数正确,获取关键词拦截状态成功'''
        r = self.obj.get(row=58)
        isIn(self, r=r, row=58)

    def test_GetKeywordInterceptStatus_002(self):
        '''获取关键词拦截状态:status状态值为0'''
        r = self.obj.get(row=59)
        isIn(self, r=r, row=59)

    def test_GetKeywordInterceptStatus_003(self):
        '''获取关键词拦截状态:status状态值为3'''
        r = self.obj.get(row=60)
        isIn(self, r=r, row=60)
Beispiel #11
0
class test_PushResult(unittest.TestCase):

    def setUp(self):
        self.obj=Method()

    def test_PushResult_001(self):
        '''异步推送:请求参数正确,推送成功'''
        r = self.obj.get(row=96)
        isIn(self,r=r,row=96)

    def test_PushResult_002(self):
        '''异步推送:noticeId不存在,推送失败'''
        r = self.obj.get(row=97)
        isIn(self,r=r,row=97)

    def test_PushResult_003(self):
        '''异步推送:必填参数为空'''
        r = self.obj.get(row=98)
        isIn(self,r=r,row=98)
class test_BagForecast(unittest.TestCase):

    def setUp(self):
        self.obj=Method()

    def test_BagForecast_001(self):
        '''袋子预报:请求参数正确,袋子预报成功'''
        r = self.obj.post(row=113)
        isIn(self,r=r,row=113)

    def test_BagForecast_002(self):
        '''袋子预报:必填参数为空,袋子预报失败'''
        r = self.obj.post(row=114)
        isIn(self,r=r,row=114)

    def test_BagForecast_003(self):
        '''袋子预报:预报单号与袋子号不一致,袋子预报失败'''
        r = self.obj.post(row=115)
        isIn(self,r=r,row=115)

    def test_BagForecast_004(self):
        '''袋子预报:预报渠道未配置,袋子预报失败 '''
        r = self.obj.post(row=116)
        isIn(self,r=r,row=116)

    def test_BagForecast_005(self):
        '''袋子预报:客户不存在,袋子预报失败'''
        r = self.obj.post(row=117)
        isIn(self,r=r,row=117)

    def test_BagForecast_006(self):
        '''袋子预报:校验码不正确,袋子预报失败'''
        r = self.obj.post(row=118)
        isIn(self,r=r,row=118)
class test_PackageForecast(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_PackageForecast_001(self):
        '''包裹预报:单个包裹预报,请求参数正确,预报成功'''

        r = self.obj.post(row=63)
        isIn(self, r=r, row=63)

    def test_PackageForecast_002(self):
        '''包裹预报:一票多件预报,请求参数正确,预报成功'''
        r = self.obj.post(row=64)
        isIn(self, r=r, row=64)

    def test_PackageForecast_003(self):
        '''包裹预报:预报渠道未配置,预报失败'''
        r = self.obj.post(row=65)
        isIn(self, r=r, row=65)

    def test_PackageForecast_004(self):
        '''包裹预报:必填参数为空,预报失败'''
        r = self.obj.post(row=66)
        isIn(self, r=r, row=66)

    def test_PackageForecast_005(self):
        '''包裹预报:校验码不正确,预报失败'''
        r = self.obj.post(row=67)
        isIn(self, r=r, row=67)

    def test_PackageForecast_006(self):
        '''包裹预报:客户不存在,预报失败'''
        r = self.obj.post(row=68)
        isIn(self, r=r, row=68)
Beispiel #14
0
class test_GetForecastResult(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_GetForecastResult_001(self):
        '''批量查询预报结果:预报单号正确,单条数据查询,查询结果成功'''
        r = self.obj.post(row=106)
        isIn(self, r=r, row=106)

    def test_GetForecastResult_003(self):
        '''批量查询预报结果:预报单号正确,多条数据查询,查询结果成功'''
        r = self.obj.post(row=107)
        isIn(self, r=r, row=107)

    def test_GetForecastResult_004(self):
        '''批量查询预报结果:Co单号正确,单条数据查询,查询结果成功'''
        r = self.obj.post(row=108)
        isIn(self, r=r, row=108)

    def test_GetForecastResult_005(self):
        '''批量查询预报结果:Co单号正确,多条数据查询,查询结果成功'''
        r = self.obj.post(row=109)
        isIn(self, r=r, row=109)

    def test_GetForecastResult_006(self):
        '''批量查询预报结果:预报单号不正确,查询结果失败,查询结果失败'''
        r = self.obj.post(row=110)
        isIn(self, r=r, row=110)

    def test_GetForecastResult_007(self):
        '''批量查询预报结果:Co单号不正确,查询结果失败,查询结果失败'''
        r = self.obj.post(row=111)
        isIn(self, r=r, row=111)

    def test_GetForecastResult_008(self):
        '''批量查询预报结果:请求参数为空,查询结果失败,查询结果失败'''
        r = self.obj.post(row=112)
        isIn(self, r=r, row=112)
Beispiel #15
0
class test_QueryForecastResult(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_QueryForecastResult_001(self):
        '''查询预报结果:请求参数正确,查询结果成功'''
        r = self.obj.post(row=99)
        isIn(self, r=r, row=99)

    def test_QueryForecastResult_003(self):
        '''查询预报结果:预报单号与渠道号不匹配,查询结果失败'''
        r = self.obj.post(row=100)
        isIn(self, r=r, row=100)

    def test_QueryForecastResult_004(self):
        '''查询预报结果:预报单号为空,查询结果失败'''
        r = self.obj.post(row=101)
        isIn(self, r=r, row=101)

    def test_QueryForecastResult_005(self):
        '''查询预报结果:预报单号不存在,查询结果失败'''
        r = self.obj.post(row=102)
        isIn(self, r=r, row=102)

    def test_QueryForecastResult_006(self):
        '''查询预报结果:预报单号与预报类型不匹配,查询结果失败'''
        r = self.obj.post(row=103)
        isIn(self, r=r, row=103)

    def test_QueryForecastResult_007(self):
        '''查询预报结果:预报渠道未配置,查询结果失败'''
        r = self.obj.post(row=104)
        isIn(self, r=r, row=104)

    def test_QueryForecastResult_008(self):
        '''查询预报结果:客户不存在,查询结果失败'''
        r = self.obj.post(row=105)
        isIn(self, r=r, row=105)
Beispiel #16
0
class test_DeleteForecast(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_DeleteForecast_001(self):
        '''预报删除:请求参数正确,预报删除成功'''
        r = self.obj.post(row=119)
        isIn(self, r=r, row=119)

    def test_DeleteForecast_002(self):
        '''预报删除:必填参数为空,预报删除失败'''
        r = self.obj.post(row=120)
        isIn(self, r=r, row=120)

    def test_DeleteForecast_003(self):
        '''预报删除:预报订单不存在,袋子预报失败'''
        r = self.obj.post(row=121)
        isIn(self, r=r, row=121)

    def test_DeleteForecast_004(self):
        '''预报删除:预报渠道与预报订单不匹配,袋子预报失败'''
        r = self.obj.post(row=122)
        isIn(self, r=r, row=122)

    def test_DeleteForecast_005(self):
        '''预报删除:客户信息与预报订单不匹配,袋子预报失败'''
        r = self.obj.post(row=123)
        isIn(self, r=r, row=123)

    def test_DeleteForecast_006(self):
        '''预报删除:校验码与预报订单不匹配,袋子预报失败'''
        r = self.obj.post(row=124)
        isIn(self, r=r, row=124)

    def test_DeleteForecast_007(self):
        '''预报删除:预报类型与预报订单不匹配,袋子预报失败'''
        r = self.obj.post(row=125)
        isIn(self, r=r, row=125)
Beispiel #17
0
class test_PackageForecastImmediately(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_PackageForecastImmediately_001(self):
        '''即时预报:单个包裹预报,请求参数正确,预报成功'''
        r = self.obj.post(row=69)
        isIn(self, r=r, row=69)

    def test_PackageForecastImmediately_002(self):
        '''即时预报:一票多件预报,请求参数正确,预报成功'''
        r = self.obj.post(row=70)
        isIn(self, r=r, row=70)

    def test_PackageForecastImmediately_003(self):
        '''即时预报:预报渠道未配置,预报失败'''
        r = self.obj.post(row=71)
        isIn(self, r=r, row=71)

    def test_PackageForecastImmediately_004(self):
        '''即时预报:必填参数为空,预报失败'''
        r = self.obj.post(row=72)
        isIn(self, r=r, row=72)

    def test_PackageForecastImmediately_005(self):
        '''即时预报:校验码不正确,预报失败'''
        r = self.obj.post(row=73)
        isIn(self, r=r, row=73)

    def test_PackageForecastImmediately_006(self):
        '''即时预报:客户不存在,预报失败'''
        r = self.obj.post(row=74)
        isIn(self, r=r, row=74)

    def test_PackageForecastImmediately_007(self):
        '''即时预报:收件人国家和邮编未在出货分区表配置'''
        r = self.obj.post(row=75)
        isIn(self, r=r, row=75)
Beispiel #18
0
 def setUp(self):
     self.obj = Method()
Beispiel #19
0
class test_DeleteRequestData(unittest.TestCase):

    def setUp(self):
        self.obj=Method()

    def test_DeleteRequestData_001(self):
        '''获取删除之前的预报数据:actionCode为Submit提交,source为TOMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=39)
        isIn(self,r=r,row=39)

    def test_DeleteRequestData_002(self):
        '''获取删除之前的预报数据:actionCode为CheckIn提交,source为TMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=40)
        isIn(self,r=r,row=40)

    def test_DeleteRequestData_003(self):
        '''获取删除之前的预报数据:actionCode为CheckOut提交,source为TMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=41)
        isIn(self,r=r,row=41)

    def test_DeleteRequestData_004(self):
        '''获取删除之前的预报数据:actionCode为TotalScan提交,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=42)
        isIn(self,r=r,row=42)

    def test_DeleteRequestData_005(self):
        '''获取删除之前的预报数据:TotalCompleted总单批次预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=43)
        isIn(self,r=r,row=43)

    def test_DeleteRequestData_006(self):
        '''获取删除之前的预报数据:Airline 航线提交,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=44)
        isIn(self,r=r,row=44)

    def test_DeleteRequestData_007(self):
        '''获取删除之前的预报数据:AirlineCompleted航线预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=45)
        isIn(self,r=r,row=45)

    def test_DeleteRequestData_008(self):
        '''获取删除之前的预报数据:BagCompleted 袋子预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=46)
        isIn(self,r=r,row=46)

    def test_DeleteRequestData_009(self):
        '''获取删除之前的预报数据:MainTransport 干线运输提交预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=47)
        isIn(self,r=r,row=47)

    def test_DeleteRequestData_010(self):
        '''获取删除之前的预报数据:ChannelCode必填字段为空,获取预报数据失败'''
        r = self.obj.post(row=48)
        isIn(self,r=r,row=48)

    def test_DeleteRequestData_011(self):
        '''获取删除之前的预报数据:ActionCode必填字段为空,获取预报数据失败'''
        r = self.obj.post(row=49)
        isIn(self,r=r,row=49)

    def test_DeleteRequestData_012(self):
        '''获取删除之前的预报数据:预报数据未获取,获取删除之前的预报数据失败'''
        r = self.obj.post(row=50)
        isIn(self,r=r,row=50)
Beispiel #20
0
class test_ReceiveLabelResult(unittest.TestCase):
    def setUp(self):
        self.obj = Method()

    def test_ReceiveLabelResult_001(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,预报类型:1001-包裹预报,请求参数正确,接收面单的预报结果成功'''
        r = self.obj.post(row=11)
        isIn(self, r=r, row=11)

    def test_ReceiveLabelResult_002(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,预报类型:1002-一票多件预报,请求参数正确,接收面单的预报结果成功'''
        r = self.obj.post(row=12)
        isIn(self, r=r, row=12)

    def test_ReceiveLabelResult_003(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,预报类型:1003-总包预报,请求参数正确,接收面单的预报结果成功'''
        r = self.obj.post(row=13)
        isIn(self, r=r, row=13)

    def test_ReceiveLabelResult_004(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,1004-总包确认,请求参数正确,接收面单的预报结果成功'''
        r = self.obj.post(row=14)
        isIn(self, r=r, row=14)

    def test_ReceiveLabelResult_005(self):
        '''接收面单的预报结果:通知类型:1004-服务商标签通知,1001-包裹预报,请求参数正确,接收面单的预报结果'''
        r = self.obj.post(row=15)
        isIn(self, r=r, row=15)

    def test_ReceiveLabelResult_006(self):
        '''接收面单的预报结果:通知类型:1009-预报结果通知,1007-校验,请求参数正确,接收面单的预报结果'''
        r = self.obj.post(row=16)
        isIn(self, r=r, row=16)

    def test_ReceiveLabelResult_007(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,1009-运输清单,请求参数正确,接收面单的预报结果'''
        r = self.obj.post(row=17)
        isIn(self, r=r, row=17)

    def test_ReceiveLabelResult_008(self):
        '''接收面单的预报结果:通知类型:1001-预报结果通知,1010干线运输,请求参数正确,接收面单的预报结果'''
        r = self.obj.post(row=18)
        isIn(self, r=r, row=18)

    def test_ReceiveLabelResult_009(self):
        '''接收面单的预报结果:通知类型为空'''
        r = self.obj.post(row=19)
        # isIn(self, r=r, row=19)
        assertHTTPCode(r, [400])
        logger.info(r.text)

    def test_ReceiveLabelResult_010(self):
        '''接收面单的预报结果:预报类型为空'''
        r = self.obj.post(row=20)
        #isIn(self, r=r, row=20)
        assertHTTPCode(r, [400])
        logger.info(r.text)

    def test_ReceiveLabelResult_011(self):
        '''接收面单的预报结果:订单未预报'''
        r = self.obj.post(row=21)
        isIn(self, r=r, row=21)
class test_GetForecastData(unittest.TestCase):

    def setUp(self):
        self.obj=Method()

    def test_GetForecastData_001(self):
        '''获取预报数据:actionCode为Submit提交,source为TOMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=27)
        isIn(self,r=r,row=27)

    def test_GetForecastData_002(self):
        '''获取预报数据:actionCode为CheckIn提交,source为TMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=28)
        isIn(self,r=r,row=28)

    def test_GetForecastData_003(self):
        '''获取预报数据:actionCode为CheckOut提交,source为TMS,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=29)
        isIn(self,r=r,row=29)

    def test_GetForecastData_004(self):
        '''获取预报数据:actionCode为TotalScan提交,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=30)
        isIn(self,r=r,row=30)

    def test_GetForecastData_005(self):
        '''获取预报数据:TotalCompleted总单批次预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=31)
        isIn(self,r=r,row=31)

    def test_GetForecastData_006(self):
        '''获取预报数据:Airline 航线提交,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=32)
        isIn(self,r=r,row=32)

    def test_GetForecastData_007(self):
        '''获取预报数据:AirlineCompleted航线预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=33)
        isIn(self,r=r,row=33)

    def test_GetForecastData_008(self):
        '''获取预报数据:BagCompleted 袋子预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=34)
        isIn(self,r=r,row=34)

    def test_GetForecastData_009(self):
        '''获取预报数据:MainTransport 干线运输提交预报完成,请求参数正确,获取预报数据成功'''
        r = self.obj.post(row=35)
        isIn(self,r=r,row=35)

    def test_GetForecastData_010(self):
        '''获取预报数据:ChannelCode必填字段为空,获取预报数据失败'''
        r = self.obj.post(row=36)
        isIn(self,r=r,row=36)

    def test_GetForecastData_011(self):
        '''获取预报数据:ActionCode必填字段为空,获取预报数据失败'''
        r = self.obj.post(row=37)
        isIn(self,r=r,row=37)

    def test_GetForecastData_012(self):
        '''获取预报数据:数据未预报,获取预报数据失败'''
        r = self.obj.post(row=38)
        isIn(self,r=r,row=38)